The Internet
UNIT 1
THE INTERNET
Structure 1.0 1.1 1.2 1.3 1.4 1.5 1.6
Introduction Objectives Classification of Networks Networking Models What is Packet Switching? Accessing the Internet Internet Protocols 1.6.1 1.6.2
1.7
1.12 1.13 1.14
1.0
16 17 18 21
Domain Name System SMTP and Electronic Mail Http and World Wide Web Usenet and Newgroups FTP Telnet
Internet Tools 1.12.1 1.12.2
14
Structure of Internet Servers Address Address Space
How does the Internet Work? Intranet & Extranet Internet Infrastructure Protocols and Services on Internet 1.11.1 1.11.2 1.11.3 1.11.4 1.11.5 1.11.6
5 6 6 7 10 10 12
Internet Protocol (IP) Transmission Control Protocol (TCP)
Internet Address 1.7.1 1.7.2
1.8 1.9 1.10 1.11
Page No.
27
Search Engines Web Browser
Summary Solutions/ Answers
28 28
INTRODUCTION
The Internet is worldwide computer network that interconnects, million of computing devices throughout the world. Most of these devices are PC’s, and servers that store and transmit information such as web pages and e-mail messages. Internet is revolutionizing and enhancing the way we as humans communicate, both locally and around the globe. Everyone wants to be a part of it because the Internet literally puts a world of information and a potential worldwide audience at your fingertips. The Internet evolved from the ARPANET (Advanced Research Projects Agency) to which other networks were added to form an inter network. The present Internet is a collection of several hundred thousand of networks rather than a single network. From there evolved a high-speed backbone of Internet access for sharing these of networks. The end of the decade saw the emergence of the World Wide Web, which heralded a platform-independent means of communication enhanced with a pleasant and relatively easy-to-use graphical interface. World Wide Web is an example of an information protocol/service that can be used to send and receive information over the Internet. It supports: x x x
Multimedia Information (text, movies, pictures, sound, programs . . . ). HyperText Information (information that contains links to other information resources). Graphic User Interface (so users can point and click to request information instead of typing in text commands).
The World Wide Web model follows Cient/Server software design. A service that uses client/server design requires two pieces of software to work: Client Software, 5
Scripting Languages
which you use to request information, and Server Software, which is an Information Provider. The server software for the World Wide Web is called an HTTP server (or informally a Web server). Examples are Mac HTTP, CERN HTTP, and NCSA HTTP. The client software for World Wide Web is called a Web browser. Examples are: Netscape, and Internet Explorer.
1.1
OBJECTIVES
After going through this unit students should be able to: x x x x x x
1.2
Make classification of networks; understand two types of networking models; understand the concept of packet switching; understand how to access to the internet; list the services available on Internet; and understand how does the Internet works.
CLASSIFICATION OF NETWORKS
There are different approaches to the classification of compute Networks. One such classification is based on the distance approach. In this section we will discuss such networks. The networks can be classified into LAN, MAN and WAN networks. Here, we describe them into brief to understand the difference between the types of network. Local Area Network (LAN) LAN is a privately - owned computer networks confined to small geographical area, such as an office or a factory widely used to connect office PCs to share information and resources. In a Local area network two or more computers are connected by same physical medium, such as a transmission cable. An important characteristic of Local Area networks is speed. i.e. they deliver the data very fast compared to other types of networks with typical data transmission speed are 10-100 Mbps. A wide variety of LANs have been built and installed, but a few types have more recently become dominant. The most widely used LAN system is the Ethernet system. Intermediate nodes (i.e. repeaters, bridges and switches) allow LANs to be connected together to form larger LANs. A LAN may also be connected to another LAN or to WANs and MANs using a “router�. In summary, a LAN is a communications network, which is: x x x
local (i.e. one building or group of buildings) controlled by one administrative authority usually high speed and is always shared
LAN allows users to share resources on computers within an organization. Metropolitan Area Network (MAN) A MAN, basically a bigger versions of a LAN is designed to extend over an entire city. It may be single network such as a cable television network, or it may be a means of connecting a number of LANs into a large network so that resources may be shared for example, a company can use a MAN to connect the LANs in all of its offices throughout a city.
6
The Internet
A MAN typically covers an area of between 5 and 50 km diameter. Many MANs cover an area the size of a city, although in some cases MANs may be as small as a group of buildings The MAN, its communications links and equipment are generally owned by either a consortium of users or by a single network provider who sells the service to the users. This level of service provided to each user must therefore be negotiated with the MAN operator, and some performance guarantees are normally specified. A MAN often acts as a high-speed network to allow sharing of regional resources (similar to a large LAN). It is also frequently used to provide a shared connection to other networks using a link to a WAN. Wide Area Network (WAN) The term Wide Area Network (WAN) usually refers to a network, which covers a large geographical area, and use communications subnets (circuits) to connect the intermediate nodes. A major factor impacting WAN design and performance is a requirement that they lease communication subsets from telephone companies or other communications carriers. Transmission rates are typically 2 Mbps, 34 Mbps, 155 Mbps, 625 Mbps (or sometimes considerably more). The basic purpose of the subnet is to transmit message from one end to another end through intermediate nodes. In most WAN a subnet consists of two types of elements: (i) Transmission lines (ii) Switching element. Transmission lines also called channels move about from one machine to another machine. The basic purpose of the switching element is to select the outgoing path for forwarding the message. Numerous WANs have been constructed, including public switched networks, large corporate networks, military networks, banking networks, stock brokerage networks, and airline reservation networks. A WAN is wholly owned and used by a single company is often referred to as an enterprises network.
1.3
NETWORKING MODELS
There are two types of networking models available: OSI reference Model and the TCP/IP Network Model for the design of computer network system. In this section we shall look at these models. OSI (Open System Interconnection) Networking Model An open system is a model that allows any two different systems to communicate regardless of their underlying architecture. The purpose of the OSI model is to open communication between different devices without requiring changes to the logic of the underlying hardware and software. The OSI model is not a protocol, it is a model for understanding and designing a network architecture that is inter- operable, flexible and robust. The OSI model has a seven-layered architecture. These are:
Application layer Presentation layer 7
Scripting Languages
Session layer Transport Layer Network layer Data link layer Physical Layer Figure 1: OSI Model
Physical layer: the physical layer is concerned with sending raw bits between the source and destination nodes over a physical medium. The source and destination nodes have to agree on a number of factors. Signal encoding: how are the bits 0 and 1 to be represented? Medium: what is the medium used and its properties? Bit synchronization: is the transmission synchronous or asynchronous? Transmission type: whether the transmission is serial or parallel? Transmission mode: is the transmission simplex, half-duplex or full duplex? Topology: what is the network topology i.e. star, mesh, ring or bus? Data link layer: the data link layer is responsible for transmitting a group of bits between the adjacent nodes. The group of bits is known as frame. The network layer passes a data unit to the data link layer and data link layer adds the header information to this data unit. The data link layer performs the following functions: x x x x x x
x
Addressing: Headers and trailers are added containing the physical addresses of the adjacent nodes and removed on a successful delivery. Framing: Grouping of/bits received from the network layer into manageable units called frame Flow control: to regulate the amount of data that can be sent to the receiver. Media access control (MAC): who decide who can send data, when and how much. Synchronization: this layer also contains bits to synchronize the timing to know the bit interval to recognize the bit correctly. Error control: it incorpoprates the CRC to ensure the correctness of the frame. Node to node delivery: it’s also responsible for error-free delivery of the entire frame/packet to the next adjacent node.
Network layer: The network layer is responsible for routing a packet within the subnet that is, from source to destination nodes across multiple nodes in the same network or across multiple networks. This layer also ensures the successful delivery of a packet to the destination node. The network layer performs the following functions: x x x
Routing: To find the optimal route Congestion control: which is based on two approaches (i) Increase on the resources (ii) Decrease the word Accounting and billing
Transport layer: this layer is the first end-to-end layer. Header of the transport layer contains information that helps send the message to the corresponding layer at the 8
The Internet
destination node. The message is broken into packets and may travel through a number of intermediate nodes. This layer takes care of error control and flow control both at the source and destination for the entire message. The responsibilities of the transport layer are: x x x
Host-to-host message delivery Flow Control Segmentation and reassembly
Session layer: the main functions of this layer are to establish, maintain and synchronize the interaction between two communication hosts. It makes sure that once a session is established it must be closed gracefully. It also checks and establishes connections between the hosts of two different users. The session layer also decides whether both users can send as well as receive data at the same time or whether only one host can send and the other can receive. The responsibilities of session layer are: x x x
x
Sessions and sub sessions: this layer divides a session into sub session for avoiding retransmission of entire message by adding the checkpoint feature. Synchronization: this layer decides the order in which data needs to be passed to the transport layer. Dialog control: this layer also decides which user application sends data and at what point of time and whether the communication is simplex, half duplex or full duplex. Session closure: this layer ensures that the session between the hosts is closed gracefully.
Presentation layer: when two hosts are communicating with each other they might use different coding standards and character sets for representing data internally. This layer is responsible for taking care of such differences. This layer is responsible for: x x x
Data encryption and decryption for security Compression Translation
Application layer: it’s the topmost layer in the OSI model, which enables the user to access the network. This layer provides user interface for network applications such as remote login, World Wide Web and FTP. The responsibilities of the application layer are: x x x x
File access and transfer Mail services Remote login World Wide Web
TCP/IP Networking Model TCP/IP is an acronym for Transmission Control Protocol / Internet Protocol. TCP/ IP is a collection of protocols, applications and services. TCP/IP protocol were developed prior to the OSI model therefore its layers do not match with the OSI model. The TCP/IP protocol suit is made of the five layers: Physical, data link, network, transport & application. The first four layers provide physical standards network interface, internetworking and transport mechanism whereas the last layer comprises of the functionalities of the three topmost layers in the OSI model.
1.4
WHAT IS A PACKET SWITCHING?
9
Scripting Languages
End systems are connected together by communication links. There are many types of communication links, which are made of different types of physical media, including fiber optics, twisted pair, coaxial cable and radio links. Different links can transmit data at different rates. The link transmission rate is often called the bandwith of the link, which is typically measured in bits/second. The highest the bandwith, the more is the capacity of the channel. End systems are not usually directly attached to each other via a single communication link. Instead, they are indirectly connected to each other through intermediate switching devices known as routers. A router takes a chunk of information arriving on one of its incoming communication links and forwards that chunk of information on one of its outgoing communication links. In the jargon of computer networking, the chunk of information is called a packet. The path that the packet takes from the sending end system, through a series of communication links and routers, to the receiving end system is known as a route or path through the network. Rather than providing a dedicated path between communicating end systems, the Internet uses a technique known as packet switching that allows multiple communicating end systems to share a path, or parts of a path, at the same time. Similar to a router, there is another special machine called gateways used in the network that allows different networks to talk to the Internet, which uses TCP/IP. Packet switching is used to avoid long delays in transmitting data over the network. Packet switching is a technique, which limits the amount of data that a computer can transfer on each turn. Packet switching allows many communications to proceed simultaneously. Each packet contains a header that specifies the computer to which the packet should be delivered and the destination is specified using computer’s address. Computers that share access to a network take turns in sending packets. On each turn, a given computer sends one packet. IP uses this packet switching concept to deliver messages on the Internet If the destination address does not exist on the local network, it is the responsibility of that network’s router to route the message one step closer to its destination. This process continues until the destination machine claims the message packet.
1.5
ACCESSING THE INTERNET
Before we can use the Internet, we have to gain access to it. This access is achieved in one of several ways, which we will discuss in this section. Above all, the Internet is a collection of networks that are connected together through various protocols and hardware. Dial-up Connection: one of the commonest ways of connection to Internet is through dial up connection using a modem and a telephone line. Using these you can connect to a host machine on the Internet. Once connected the telecommunications software allows you to communicate with the Internet host. When the software runs it uses the modem to place a telephone call to a modem that connects to a computer attached to the Internet. The SLIP (Serial Line Internet Protocol) or PPP (Point to Point Protocol): two protocols; serial line interface protocol (SLIP) and the point-to-point protocol (PPP), allow a user to dial into the Internet. They convert the normal telephone data stream into TCP/IP packets and send them to the network. With these, the user becomes a peer station on the Internet and has access to all of the Internet’s facilities. Internet Service Providers As mentioned earlier, nobody truly owns the Internet, but it is maintained by a group of volunteers interested in supporting this mode of information interchange. Central to this control is the Internet service provider (ISP) which is an important component in the Internet system. Each ISP is a network of routers and communication links. The different ISPs provide a variety of different types of network access to the end systems, including 56 Kbps dial-up modem access, residential broadband access such 10
The Internet
as cable modem or DSL, high-speed LAN access, and wireless access. ISPs also provide Internet access to content providers, connecting Web sites directly to the Internet. To allow communication among Internet users and to allow users to access worldwide Internet content, these lower-tier ISPs are interconnected through national and international upper-tier ISPs, such as Sprint. An upper-tier ISP consists of highspeed routers interconnected with high-speed fiber-optic links. Each ISP network, whether upper-tier or lower-tier, is managed independently, runs the IP protocol (see below), and conforms to certain naming and address conventions. ISDN (Integrated Services Digital Network) Service The whole idea of ISDN is to digitize the telephone network to permit the transmission of audio, video and text over existing telephone lines. The purpose of the ISDN is to provide fully integrated digital services to users. The use of ISDN for accessing the Internet has breathed new life into the ISDN service. ISDN’s slow acceptance was due mostly to a lack of a need for its capabilities. Being a digital interface, ISDN has provided a means for accessing web sites quickly and efficiently. In response to this new demand, telephone companies are rapidly adding ISDN services. The ISDN standard defines three channels types, each with the different transmission rate: bearer channel (B), data channel (D) and hybrid channel (H) (see the following table) Channel B D H
Data Rate (Kbps) 64 16, 64 384, 1536, 1920
The B channel is defined at a rate of 64 Kbps. It is the basic user channel and can carry any type of digital information in full duplex mode as long as the required transmission does not exceed 64 kbps. A data channel can be either 16 or 64 kbps depending on the needs of the user used to carry control signals for B channels. Of the two basic rate B channels, one is used to upload data to the Internet and one to download from the Internet. The D Channel assists in setting up connection and maintaining flow control. There are three ways ISDN can be used to interface to the Internet, by using a modem, adaptor, or bridge/router. ISDN modems and adaptors limit access to a single user. Both terminate the line into an ISDN service. The difference between them is that the ISDN modem takes the Internet traffic and pushes it through the computer serial port, while, the faster ISDN adaptor connects directly to the computer’s buses. ISDN bridge/routers allow for local network connections to be made through ISDN to the Internet. The ISDN termination is made into an Ethernet-type LAN so that multiple users can achieve access to the Net through a single access address. Transfer rates between user and the Internet are between 56 and 128 Kbps.
Direct ISP Service through Leased Line The most costly method of accessing the Internet is to use leased lines that connect directly to the ISP. This will increase access rate to anywhere between 64 K and 1.5 Mbps, depending on the system in use. Equipment called data service units (DSU) and channel service units (CSU) are set up in pairs, one pair at the customer site and the other at the ISP site. There is no phone dialing required since the connection is direct. Also the only protocol needed to complete the access is TCP/IP, for much the same reason. Depending on the transfer rate required and the distance between the sites, cabling between them can be made with fiber optic cables or unshielded twisted-pair (UTP) copper wire. 11
Scripting Languages
Cable Modem One more way of accessing the Internet currently being developed is the use of cable modems. These require that you subscribe to a cable service and allow you two-way communication with the Internet at rates between 100K and 30 Mbps. The cable modem performs modulation and demodulation like any other modem, but it also has a tuner and filters to isolate the Internet signal from other cable signals. Part of the concern for use of the cable modem is to formulate LAN adapters to allow multiple users to access the Internet. A medium access control (MAC) standard for sending data over cable is being formulated by the IEEE 802.14 committee.
1.6
INTERNET PROTOCOLS
A communication protocol is an agreement that specifies a common language two computers use to exchange messages. For example, a protocol specifies the exact format and meaning of each message that a computer can send. It also specifies the conditions under which a computer should send a given message and how a computer should respond when a message arrives. Different types of protocols are used in Internet such as IP and TCP. A computer connected to the Internet needs both TCP and IP software. IP provides a way of transfering a packet from its source to destination and TCP handles the lost datagrams and delivery of datagrams. Together, they provide a reliable way to send data across the Internet. We discuss about these protocols in brief in the following section.
1.6.1 Internet Protocol (IP) The Internet protocol specifies the rules that define the details of how computers communicate. It specifies exactly how a packet must be formed and how a router must forward each packet on toward its destination. Internet Protocol (IP) is the protocol by which data is sent from one computer to another on the Internet. Each computer (known as a host) on the Internet has at least one IP address that uniquely identifies it from all other computers on the Internet. When sending or receiving data, the message gets divided into little chunks called packet. Each of these packets contains both the senders Internet address and the receiver’s address. The packet that follows the IP specification is called an IP datagram. The Internet sends an IP datagram across a single network by placing it inside a network packet. For network the entire IP datagram is data. When the network packet arrives at the next computer, the computer opens the packet and extracts the datagram. The receiver examines the destination address on the datagram to determine how to process it. When a router, determines that the datagram must be sent across another network, the router creates a new network packet, encloses the datagram inside the packet and sends the packet across another network toward its destination. When a packet carrying a datagram arrives at its final destination, local software on the machine opens the packet and processes the datagram. Because a message is divided into a number of packets a different route can send each packet across the Internet. Packets can arrive in a different order than the order they were sent in. The Internet Protocol just delivers them. It's up to another protocol, the Transmission Control Protocol to put them back in the right order. IP is a connectionless protocol, which means that there is no established connection between the end points that are communicating. Each packet that travels through the Internet is treated as an independent unit of data without any relation to any other unit of data. In the Open Systems Interconnection (OSI) communication model, IP is in layer 3, the Networking Layer.
1.6.2 Transmission Control Protocol (TCP) TCP makes the Internet reliable. TCP solves many problems that can occur in a packet switching system. TCP provide the following facilities: x x 12
TCP eliminates duplicate data. TCP ensures that the data is reassembled in exactly the order it was sent
The Internet
x x
TCP resends data when a datagram is lost. TCP uses acknowledgements and timeouts to handle problem of loss.
The main features of TCP are: Reliability: TCP ensures that any data sent by a sender arrives at the destination as it was sent. There cannot be any data loss or change in the order of the data. Reliability at the TCP has four important aspects: x x x x
Error Control Loss control Sequence control Duplication control
Connection-oriented: TCP is connection-oriented. Connection-oriented means a connection is established between the source and destination machines before any data is sent i.e. a connection is established and maintained until such time as the message or messages to be exchanged by the application programs at each end have been exchanged. The connections provided by TCP are called Virtual Connections. It means that there is no physical direct connection between the computers. TCP is used along with the Internet Protocol to send data in the form of message units between computers over the Internet. While IP takes care of handling the actual delivery of the data, TCP takes care of keeping track of the individual units of data (called Packet) that a message is divided into for efficient routing through the Internet. TCP provides for a reliable, connection-oriented data transmission channel between two programs. Reliable means that data sent is guaranteed to reach its destination in the order sent or an error will be returned to the sender. For example, when an HTML file is sent to someone from a Web server, the Transmission Control Protocol (TCP) program layer in that server divides the file into one or more packets, numbers the packets, and then forwards them individually. Although each packet has the same destination IP address, it may get routed differently through the network. At the other end (the client program in our computer), TCP reassembles the individual packets and waits until they have arrived to forward them as a single file. TCP is responsible for ensuring that a message is divided into the packets that IP manages and for reassembling the packets back into the complete message at the other end. In the Open Systems Interconnection (OSI) communication model, TCP is in layer 4, the Transport Layer.
Check Your Progress 1 1.
State whether True or False: a) b) c) d)
e) 2. 3.
1.7
Internet is a Global network and is managed by a profit-oriented organization. TCP does not control duplication of packets. For logging in to Internet you must have an account on its host machine. A router is used at the network layer. Internet provides only one-way communication.
What are the different layers in the TCP/IP networking Model? Describe the facilities provided by the TCP?
INTERNET ADDRESS 13
Scripting Languages
Addresses are essential for virtually everything we do on the Internet. The IP in TCP/IP is a mechanism for providing addresses for computers on the Internet. Internet addresses have two forms: x x
Person understandable which is expressed as words Machine understandable which is expressed as numbers
The following can be a typical person understandable address on Internet: VVS @ ignou.ac.in VVS is an username which in general is the name of the Internet account. This name is same as the one, which you may use when logging into the computer on which you have your Internet account. Logging in is the process of gaining access to your account on a computer, which is shared by several users. Your Internet account is created on it. @ Connect “who” with where: .ignou is a subdomain (could be several in each could be separated by (dot). Last one is referred to a domain). .edu is a domain top or what part in – It refers to “where” part which is a country code.
1.7.1 Structure of Internet Servers Address The structure of an Internet server’s address keyed into a client’s software is as follows: http://www.microsoft.com Where: http is the communication protocol to be used www is the notation for World Wide Web .Microsoft is the registered domain Name associated with the IP address of an Internet Server. .com the server provides commercial services to clients who connect to it. To help to speed up access, its IP address can be directly represented in form of numbers. 127.57.13.1 instead of the domain name, microsoft.com. In this case no name resolution needs to take place. An Internet address is a unique 32-bit number that is typically expressed as four 8-bit octets, with each octet separated by a period. Each of the octets can take on any number from 0 through 255. Hosts, Domains and Subdomains Hosts are in general, individual machines at a particular location. Resources of a host machine is normally shared and can be utilized by any user on Internet. Hosts and local networks are grouped together into domains, which then are grouped together into one more larger domains. For an analogy a host computer is considered as an apartment building in a housing complex and your account is just an apartment in it. Domain may be an apartment complex, a town or even a country. Sub-domains may correspond to organizations such as IGNOU. India comes under a large domain. “IN”. Computers termed as name servers contain database of Internets host addresses. They translate word addresses or persons understandable into numeric equivalents. Let us see another example of Internet address: http://www.ignou.ac.in 14
The Internet
What does it all mean? Actually to the ISP server, very little. The server wants to see something quite different. It wants to see a 32-bit number as an Internet address. Something like this equivalent decimal grouping: 198.168.45.249 The Internet addresses, known as universal resources locators (URL), are translated from one form to the other using an address resolution protocol. The first address is in the form we are most used to and that user use to access an Internet site. In this example, the address is for a website, identified by the hypertext transfer protocol (http), which controls access to web pages. Following http is a delimiter sequence, ://, and identification for the world wide web (www). The domain name, ignou.ac follows www and identifies the general site for the web.(dot) edu is one example of a domain top, which is a broad classification of web users. Other common domain tops are: .com for commerce and businesses .gov for government agencies .mil for military sites .org for all kinds of organizations. Lastly, in this example is a country code, again preceded by a dot. Here we are using in for the India, which is the default country. Addresses may be followed by subdomains separated by dots or slashes (/) as needed. These addresses are translated into a 32-bit (4 decimal numeric groups) address shown as for http:// www.ignou.ac.in we will further discuss this topic in the next section.
1.7.2 Address Space Internet addresses are divided into five different types of classes. The classes were designated A through E. class A address space allows a small number of networks but a large number of machines, while class C allows for a large number of networks but a relatively small number of machines per network. The following figure lists five address classes used in classical network addresses.
0 0031 0
1 0
8 Network
11 1 0
11 1 1 0
24
32
Host
Network
11 0
16
Class A
Host
Network
Class B
Host
Multicast address
Reserved for future use
Class C
Class D
Class E
15
Scripting Languages Figure 2: The IP Address Structure
Regardless of the class of address space assigned, organizations assigned a particular class of address will not utilize the entire address space provided. This is especially in the case of class A and Class B address allocation schemes. Ports A port is an additional 16-bit number that uniquely identifies the particular service on any given machine on the Internet. Port numbers are 16 bit wide, therefore each computer on the Internet has a maximum number of 216 or 65,536 ports. The particular application is identified by its unique port number in the same way that a specific television station has a unique channel number. Port numbers are divided into three ranges: x x x
Well-known ports are those from 0 through 1,023. Registered ports are those from 1,024 through 49,151. Dynamic and private ports are those from 49,152 through 65,535.
Well-known ports, those ranging from 0 through 1,023 are where most common services on the Internet are residing. These ports are controlled and assigned by the Internet Assigned Number Authority (IANA) and on most systems can be used only by system (root) processes or by programs executed by privileged users.
1.8
HOW DOES THE INTERNET WORK?
As discussed in the previous section every computer connected to the Internet has a unique address. Let's say your IP address is 1.2.3.4 and you want to send a message to the computer with the IP address 5.6.7.8. The message you want to send is "Hello computer 5.6.7.8!� Let's say you've dialed into your ISP from home and the message must be transmitted over the phone line. Therefore the message must be translated from alphabetic text into electronic signals, transmitted over the Internet, and then translated back into alphabetic text. How is this accomplished? Through the use of a protocol stack. Every computer needs one to communicate on the Internet and it is usually built into the computer's operating system (i.e. Windows, Unix, etc.). The protocol stack used on the Internet is refered to as the TCP/IP protocol stack, which was discussed in section 1.3. If we were to follow the path that the message "Hello computer 5.6.7.8!" took from our computer to the computer with IP address 5.6.7.8, it would happen something like this:
Figure 3: Environment of the Packet Flow
1. 2.
16
The message would start at the top of the protocol stack on your computer and work it's way downward. If the message to be sent is long, each stack layer that the message passes through may break the message up into smaller chunks of data. This is because data sent over the Internet (and most computer networks) are sent in
The Internet
3.
4. 5.
6.
7. 8.
9.
1.9
manageable chunks. On the Internet, these chunks of data are known as packets. The packets would go through the Application Layer and continue to the TCP layer. Each packet is assigned a port number, which is used by program on the destination computer to receive the message because it will be listening on a specific port. After going through the TCP layer, the packets proceed to the IP layer. This is where each packet receives it's destination address, 5.6.7.8. Now that our message packets have a port number and an IP address, they are ready to be sent over the Internet. The hardware layer takes care of turning our packets containing the alphabetic text of our message into electronic signals and transmitting them over the phone line. On the other end of the phone line your ISP has a direct connection to the Internet. The ISPs router examines the destination address in each packet and determines where to send it. Often, the packet's next stop is another router. More on routers and Internet infrastructure later. Eventually, the packets reach computer 5.6.7.8. Here, the packets start at the bottom of the destination computer's TCP/IP stack and work upwards. As the packets go upwards through the stack, all routing data that the sending computer's stack added (such as IP address and port number) is stripped from the packets. When the data reaches the top of the stack, the packets have been re-assembled into their original form, "Hello computer 5.6.7.8!"
INTRANET AND EXTRANET
Intranets are basically “small” Internets. They use the same network facilities that the Internet does, but access is restricted to a limited sphere. For instance, a company can set up an intranet within the confines of the company itself. Access can be tightly controlled and limited to authorized employees and staff. There is no connection to the Internet or any other outside network. Functions like web sites, file uploads and downloads, and e-mail is available on intranets within the confines of the network. Since frivolous sites are no longer available, there is no employee time lost due to accessing them. There is, of course, the limitation of the networking area. The very benefit of restricting access to all of the facilities available on the Internet also restricts communication to other desirable locations. This is where the extranet steps in. An extranet is network that connects a number of intranets into a truly mini-Internet Access is extended to all the intranets connected through the extranet, but, again, not to the Internet. Extranets requires a constant Internet connection and a hypertext transfer protocol (http) server. Extranets can also be used to connect an intranet to the Internet so that remote offsite access can be made into a company’s intranet by an authorized individual. This can facilitate through an extranet. Basically, it uses passwords and smart cards to log in to a gateway server that checks the requester’s security credentials. If the user checks out, he or she is allowed access into the company’s intranet structure. A number of URL address are set aside for intranet and extranet use. Essentially because intranets are self-contained networks, the same set of addresses can be used by all intranets without conflict. Extranet addresses are designed to recognize the intranets they connect and correctly preface each intranet address with an identifier. This allows two interconnected intranets to retain the same set of address values and keep them from being mistaken. One class A address, ranging from 10.0.0.0 to 10.255.255.255 is reserved for intranet usage. Again, since an intranet is a selfcontained system, it only needs one class A network to designate the main network. Subnetworks use reserved class B and class C addresses. There are 16 class B addresses, from 172.16.0.0 ti 172.31.255.255 and 256 class C addresses, which range from 192.168.0.0 to 192.168.255.255. 17
Scripting Languages
1.10
INTERNET INFRASTRUCTURE
So now you know how packets travel from one computer to another over the Internet. But what's in-between? What actually makes up the Internet infrastructure or backbone?
NSP
NSP
NSP
Figure 4: Internet Backbone
The Internet backbone is made up of many large networks, which interconnect with each other. These large networks are known as Network Service Providers or NSPs. These networks peer with each other to exchange packet traffic. Each NSP is required to connect to Network Access Points or NAPs. At the NAPs, packet traffic may jump from one NSP's backbone to another NSP's backbone. NSPs also interconnect at Metropolitan Area Exchanges or MAEs. MAEs serve the same purpose as the NAPs but are privately owned. NAPs were the original Internet interconnects points. Both NAPs and MAEs are referred to as Internet Exchange Points or IXs. NSPs also sell bandwidth to smaller networks, such as ISPs and smaller bandwidth providers. Below is a picture showing this hierarchical infrastructure. This is not a true representation of an actual piece of the Internet. The above figure is only meant to demonstrate how the NSPs could interconnect with each other and smaller ISPs. None of the physical network components are shown in this figure. This is because a single NSP's backbone infrastructure is a complex drawing by itself. Most NSPs publish maps of their network infrastructure on their web sites and can be found easily. To draw an actual map of the Internet would be nearly impossible due to it's size, complexity, and ever changing structure. The Internet Routing Hierarchy So how do packets find their way across the Internet? Does every computer connected to the Internet know where the other computers are? Do packets simply get 'broadcast' to every computer on the Internet? The answer to both the preceeding questions is 'no'. No computer knows where any of the other computers are, and packets do not get sent to every computer. The information used to get packets to their destinations is contained in routing tables kept by each router connected to the Internet. Routers are packet switches. A router is usually connected between networks to route packets between them. Each router knows about it's sub-networks and which IP 18
The Internet
addresses they use. The router usually doesn't know what IP addresses are 'above' it. Examine the figure below. The black boxes connecting the backbones are routers. The larger NSP backbones at the top are connected at a NAP. Under them are several sub-networks, and under them, more sub-networks. At the bottom are two local area networks with computers attached.
NAP/ routers
My Computer 1.2.3.4 Figure 5: Routes Connecting in Network
When a packet arrives at a router, the router examines the IP address put there by the IP protocol layer on the originating computer. The router checks it's routing table. If the network containing the IP address is found, the packet is sent to that network. If the network containing the IP address is not found, then the router sends the packet on a default route, usually up the backbone hierarchy to the next router. Hopefully the next router will know where to send the packet. If it does not, again the packet is routed upwards until it reaches a NSP backbone. The routers connected to the NSP backbones hold the largest routing tables and here the packet will be routed to the correct backbone, where it will begin its journey 'downward' through smaller and smaller networks until it finds it's destination. Domain Names and Address Resolution But what if you don't know the IP address of the computer you want to connect to? What if you need to access a web server referred to as www.anothercomputer.com? How does your web browser know where on the Internet this computer lives? The answer to all these questions is the Domain Name Service or DNS. The DNS is a distributed database, which keeps track of computer's names and their corresponding IP addresses on the Internet. Many computers connected to the Internet host part of the DNS database and the software that allows others to access it. These computers are known as DNS servers. No DNS server contains the entire database; they only contain a subset of it. If a DNS server does not contain the domain name requested by another computer, the DNS server re-directs the requesting computer to another DNS server.
19
Scripting Languages
DRDO
ISRO
Reliance
TATA
BARC
Bharti Figure 6: DNS Hierarchy
The Domain Name Service is structured as a hierarchy similar to the IP routing hierarchy. The computer requesting a name resolution will be re-directed 'up' the hierarchy until a DNS server is found that can resolve the domain name in the request. Figure 6 illustrates a portion of the hierarchy. At the top of the tree are the domain roots. Some of the older, more common domains are seen near the top. What is not shown are the multitude of DNS servers around the world which form the rest of the hierarchy. When an Internet connection is setup (e.g. for a LAN or Dial-Up Networking in Windows), one primary and one or more secondary DNS servers are usually specified as part of the installation. This way, any Internet applications that need domain name resolution will be able to function correctly. For example, when you enter a web address into your web browser, the browser first connects to your primary DNS server. After obtaining the IP address for the domain name you entered, the browser then connects to the target computer and requests the web page you wanted.
1.11
PROTOCOLS AND SERVICES ON INTERNET
To work with Internet and to utilize its facilities we use certain tools. For example, Telnet is a tool, which is utilized for logging on remote computers on the Internet. Let us briefly discuss about some of the important tools and services.
1.11.1
Domain Name System
Domain name is a name given to a network for ease of reference. Domain refers to a group of computers that are known by a single common name. Somebody has to transfer these domain names into IP addresses. It is decided on the physical location of the web server as well as where the domain name is registered. Some generic domain names are: Domain name Com Edu Gov Mil Org
Description Commercial organization Educational organization Government organization Military group Non-profit organization
Thus, humans use domain names when referring to computers on the Internet, whereas computers work only with IP addresses, which are numeric. DNS was developed as a distributed database. The database contains the mappings between the domain names and IP addresses scattered across different computers. This DNS was consulted whenever any message is to be sent to any computer on the Internet. DNS is based on the creation of the hierarchical domain based naming architecture, which is implemented as a distributed database. It is used for mapping host names and email 20
The Internet
addresses to IP addresses. Each organization operates a domain name server that contains the list of all computers in that organization along with their IP addresses. When an application program needs to translate a computer’s name into the computer’s IP address, the application becomes a client of the DNS. It contacts a domain name server and sends the server an alphabetic computer name then the server returns the correct IP address. The domain name system works like a directory. A given server does not store the names and addresses of all possible computers in the Internet. Each server stores the name of the computers at only one company or enterprise.
1.11.2
SMTP and Electronic Mail
One of the very useful things about Internet is that it allows you almost instantly exchange of electronic message (e-mail) across the worlds. E-mail is a popular way of communication on the electronic frontier. You can E-mail to your friend or a researcher or anybody for getting a copy of a selected paper. Electronic mail system provides services that allowed complex communication and interaction. E-mail provide the following facilities: x x x x x
Composing and sending/receiving a message. Storing/forwarding/deleting/replying to a message. Sending a single message to more than one person. Sending text, voice, graphics and video. Sending a message that interacts with other computer programs.
Another commonly used Internet service is electronic mail. E-mail uses an application level protocol called Simple Mail Transfer Protocol or SMTP. SMTP is also a text-based protocol, but unlike HTTP, SMTP is connection oriented. SMTP is also more complicated than HTTP. When you open your mail client to read your e-mail, this is what typically happens: 1.
2. 3. 4.
5.
The mail client (Netscape Mail, Lotus Notes, Microsoft Outlook, etc.) opens a connection to it's default mail server. The mail server's IP address or domain name is typically setup when the mail client is installed. The mail server will always transmit the first message to identify itself. The client will send an SMTP HELO command to which the server will respond with a 250 OK message. Depending on whether the client is checking mail, sending mail, etc. the appropriate SMTP commands will be sent to the server, which will respond accordingly. This request/response transaction will continue until the client sends an SMTP QUIT command. The server will then say goodbye and the connection will be closed.
Similarly, when you send an e-mail message your computer sends it to an SMTP server. The server forwards it to the recipients mail server depending on the email address. The received message is stored at the destination mail server until the addressee retrieves it. To receive E-mail a user Internet account includes an electronic mailbox. A message sent for you is received at your Internet host computer, where it is stored in your electronic mailbox. As soon as you login into your Internet account, one of the first things you should do is to check your mailbox. Sender’s Computer computer
e-mail Client
recipient’s
e-mail Server
21
Scripting Languages
TCP/IP used to transfer message Figure 7: An e-mail transfer across the Internet uses two programs: client and server
E-mail system follows the client-server approach to transfer messages across the Internet. When a user sends an E-mail message a program on the sender’s computer becomes a client. It contacts an e-mail server program on the recipient’s computer and transfers a copy of the message. Some of the mail programs those exist on Internet are UCB mail, Elm, Pine etc. However, one thing, which you must emphasize while selecting a mail program, is the user friendliness of that program. Through E-mail on Internet you can be in direct touch of your friend and colleagues. Mailing lists on Internet Another exciting aspect about the E-mail is that you can find groups of people who share your interests-whether you are inclined toward research, games or astronomy. E-mail provides a mechanism for groups of people who have shared interests to establish and maintain contact. Such interest groups are referred to as mailing lists (lists for short). After all they are mailing lists of the members e-mail addresses. You can subscribe to any of such lists. You will receive copies of all the mail sent to the list. You can also send mail to al subscribers of the list.
1.11.3
Http and World Wide Web
One of the most commonly used services on the Internet is the World Wide Web (WWW). The application protocol that makes the web work is Hypertext Transfer Protocol or HTTP. Do not confuse this with the Hypertext Markup Language (HTML). HTML is the language used to write web pages. HTTP is the protocol that web browsers and web servers use to communicate with each other over the Internet. It is an application level protocol because it sits on top of the TCP layer in the protocol stack and is used by specific applications to talk to one another. In this case the applications are web browsers and web servers. HTTP is a connectionless text based protocol. Clients (web browsers) send requests to web servers for web elements such as web pages and images. After the request is serviced by a server, the connection between client and server across the Internet is disconnected. A new connection must be made for each request. Most protocols are connection oriented. This means that the two computers communicating with each other keep the connection open over the Internet. HTTP does not however. Before an HTTP request can be made by a client, a new connection must be made to the server. When you type a URL into a web browser, this is what happens: 1. 2. 3.
4. 5. 6. 7.
22
If the URL contains a domain name, the browser first connects to a domain name server and retrieves the corresponding IP address for the web server. The web browser connects to the web server and sends an HTTP request (via the protocol stack) for the desired web page. The web server receives the request and checks for the desired page. If the page exists, the web server sends it. If the server cannot find the requested page, it will send an HTTP 404 error message. (404 means 'Page Not Found' as anyone who has surfed the web probably knows.) The web browser receives the page back and the connection is closed. The browser then parses through the page and looks for other page elements it needs to complete the web page. These usually include images, applets, etc. For each element needed, the browser makes additional connections and HTTP requests to the server for each element. When the browser has finished loading all images, applets, etc. the page will be completely loaded in the browser window.
The Internet
Most Internet protocols are specified by Internet documents known as a Request For Comments or RFCs. RFCs may be found at several locations on the Internet. WWW is an Internet navigation tool that helps you to find and retrieve information links to other WWW pages. The WWW is a distributed hypermedia environment consisting of documents from around the world. The documents are linked using a system known as hypertext, where elements of one document may be linked to specific elements of another document. The documents may be located on any computer connected to the Internet. The word “document” is not limited to text but may include video, graphics, databases and a host of other tools. The World Wide Web is described as a “wide area hypermedia information initiative among to give universal access to large universe of documents”. World Wide Web provides users on computer networks with a consistent means to access a variety of media in a simplified fashion. A popular software program to search the Web is called Mosaic, the Web project has modified the way people view and create information. It has created the first global hypermedia network. Once again the WWW provides an integrated view of the Internet using clients and servers. As discussed earlier, clients are programs that help you seek out information while servers are the programs that find information to the clients. WWW servers are placed all around the Internet. The operations of the Web mainly rely on hypertext as its means of interacting with users. But what is hypertext? Hypertext as such is the same as regular text that is it can be written, read, searched or edited; however, hypertext contains connections within the text to other documents. The hypertext links are called hyperlinks. These hyperlinks can create a complex virtual web of connections. Hypermedia is an advanced version of hypertext documents as it contains links not only to other pieces of text but also to other forms of media such as sounds, images and movies. Hypermedia combines hypertext and multimedia.
1.11.4
Usenet and Newsgroups
In Internet there exists another way to meet people and share information. One such way is through Usenet newsgroups. These are special groups set up by people who want to share common interests ranging from current topics to cultural heritages. These are currently thousands of Usenet newsgroups. The Usenet can be considered as another global network of computers and people, which is interwined with the Internet. However, Usenet does not operate interactively like the Internet, instead Usenet machines store the messages sent by users. Unlike mail from mailing lists, the news articles do not automatically fill your electronic mailbox. For accessing the information on newsnet, one needs a special type of program called a newsreader. This program help in retrieving only the news you want from Usenet storage site and display it on your terminal. Usenet is like living thing, New newsgroups gets added, the groups which have too much traffic get broken up into smaller specialized groups, the groups even can dissolve themselves. However, all of this occurs based on some commonly accepted rules and by voting. For Usenet, there is no enforcement body; it entirely depends on the cooperation of its computers owners and users. The newsgroups are really meant fro interaction of people who share your interests. You can post your own questions as well as your answers to the questions of others, on the Usenet. One thing, which is worth mentioning here, is that when one is interacting wit people on Internet certain mannerism should be adopted. These rules are sometimes called “netiquette”. In a face-to-face conversation you can always see a person’s facial gestures and hand movements and can ascertain whether he is 23
Scripting Languages
teasing or is being sarcastic or sometimes even lying. However, in on-line interaction one cannot see the person one is interacting with. The rules of netiquette may help to compensate some of these limitations of this on-line environment.
1.11.5
FTP
FTP (File Transfer Protocol), a standard Internet protocol, is the simplest way to exchange files between computers on the Internet. Like the Hypertext Transfer Protocol (Hypertext Transfer Protocol), which transfers displayable Web pages and related files, FTP is an application protocol that uses the Internet's TCP/IP protocols. FTP is commonly used to transfer Web page files from their creator to the computer that acts as their server for everyone on the Internet. It's also commonly used to downloading programs and other files to the computer from other servers. However, for such transfer you need an account name on a host and the password. The FTP program will make connection with the remote host, which will help you to browse its directories and mark files for transfer. However, you cannot look at the contents of a file while you are connected via FTP. You have to transfer the copy and then look at it once it is on your own account. FTP includes many commands but only few are used to retrieve a file. A user needs to understand the three basic commands to connect to remote computer, retrieve a copy of file and exit the FTP program. The commands with their meanings are:
Command Open get bye
Purpose connect to a remote computer retrieve a file from the computer terminate the connection and leave the FTP program
Transferring a file via FTP requires two participants: an FTP client program and FTP server program. The FTP client is the program that we run on our computers. The FTP server is the program that runs on the huge mainframe somewhere and stores tens thousands of files. It is similar to an online library of files. The FTP client can download (receive) or upload (send) files to the FTP server. Using Web browser you can download the files but you can not upload the files. FTP applications will help you to upload the files to the web sites, which you are maintaining. FTP only understands two basic file formats. It classifies each file either as a text file or a binary file. A text file contains a sequence of characters collected into lines. Although computers used ASCII encoding for text files, FTP includes commands to translate between ASCII and other character encoding. FTP uses the classification binary file for all nontext files. The user must specify binary for any file that contains: x x x x x
x
A computer program Audio data A graphic or video image A spreadsheet A document from a word processor A compressed file
FTP service compress files to reduce the total amount of disk space the files require. Before transferring a file user must tell FTP that the file contains ASCII text or nontext file. FTP assumes to perform ASCII transfers unless the user enters the binary command. There are many FTP programs that you can download from the Internet. Windows has its own command line based FTP program. To execute it, select Run from Windows taskbar and type FTP and press enter. By typing open command you can connect to any ftp server. To connect to FTP server you must have a login name and 24
The Internet
the password. Most of the FTP servers allow anonymous connections. In this case username is anonymous and password is your e-mail address. Another important FTP program, which is available as a shareware, is WSFTP. Using this window based program it is easier to maintain your web site.
1.11.6
Telnet
TELNET stands for TErminal NETwork. Telnet is both a TCP/IP application and a protocol for connecting a local computer to a remote computer. Telnet is a program that allows an Internet host computer to become a terminal of another host on the Internet. Telnet is the Internet remote login service. Telnet protocol specifies exactly how a remote login interacts. The standard specifies how to client contacts the server and how the server encodes output for transmission to the client. To use the Telnet service, one must invoke the local application program and specify a remote machine. The local program becomes a client, which forms a connection to a server on the remote computer. The client passes keystrokes and mouse movements to the remote machine and displays output from the remote machine on the user’s display screen. Telnet provides direct access to various services on Internet. Some of these services are available on your host, but Telnet is especially useful when these services are not available on your host. For example, if you want to use graphical interfaces designed by other users then Telnet, allows you to access their hosts and use their new interfaces. Similarly, whenever someone creates a useful service on his host, Telnet allows you to access this valuable information resource. This tools Is especially useful for accessing public services such as library card catalogues, the kind of databases available on the machine etc. You can also log into any catalogue service of a library and use it. The working of TELNET 1. 2. 3.
4. 5.
6.
7.
8.
The commands and characters are sent to the operating system on the common server computer. The local operating system sends these commands and characters to a TELNET client program, which is located on the same local computer. The TELNET client transforms the characters entered by the user to an agreed format known as Network Virtual Terminal (NVT) characters and sends them to the TCP/IP protocol stack of the server computer. NVT is the common device between the client and server. The commands and text are first broken into TCP and then IP packets and are sent across the physical medium from the local client computer to the server. At the server computer’s end, the TCP/IP software collects all the IP packets, verifies their correctness and reconstructs the original command and handover the commands or text to that computer operating system. The operating system of the server computer hands over these commands or text to the TELNET server program, which is executing on that remote computer. The TELNET server program on the remote server computer then transforms the commands or text from the NVT format to the format understood by the remote computer. The TELNET cannot directly handover the commands or text to the operating system so TELNET hands over the commands/text to the Psuedo-terminal driver. The Pseudo-terminal driver program then hands over the commands or text to the operating system of the remote computer, which then invokes the application program on the remote server.
The working of the TELNET is extremely simple. Suppose you are working as a faculty member of Indira Gandhi National Open University. You have a typical account FACULTY-1 on the IGNOU computer, which is one of the hosts of the Internet. You are selected for academic exchange scholarship to USA. You will get a user account in U.S.A. However, all your colleagues know only your IGNOU 25
Scripting Languages
account. Thus, using Telnet you can always log on to your account in India for mail your papers for using programs etc. There are many databases available on the Internet. You can explore these databases using Telnet. There are going to be many Internet services yet to be created. Every year and better means of accessing the treasures of the Internet is appearing in which Telnet is the key for accessing.
Check Your Progress 2 1.
State whether True or False: a) b) c)
2. 3. 4.
E-mail can be used to send text, pictures and movies. Usenet facility is same as that of mailing list facility. Anonymous FTP allows viewing and retrieving a file from the archieve of a host without having an account on that machine. d) Telnet is used for remote login. e) An Internet address is a 16-bit number. f) Each computer on the Internet has a maximum number of 216 or 65,536 ports. What is an Internet address? What is FTP? What is Telnet?
1.12
INTERNET TOOLS
In this section we shall look at two software tools available on the Internet.
1.12.1
Search Engines
Search Engines are programs that search the web. Web is a big graph with the pages being the nodes and hyperlinks being the arcs. Search engines collect all the hyperlinks on each page they read, remove all the ones that have already been processed and save the rest. The Web is then searched breadth-first, i.e. each link on page is followed and all the hyperlinks on all the pages pointed to are collected but they are not traced in the order obtained. Automated search is the service that is provided by Search engines. An automated search service allows an individual to find information that resides on remote computers. Automated search systems use computer programs to find web pages that contain information related to a given topic. It allows to locate: x x x
Web pages associated with a particular company or individual Web pages that contain information about a particular product. Web pages that contain information about a particular topic.
The results of an automated search can be used immediately or stored in a file on disk to use it later. The results of a search are returned in the form of a web page that has a link to each of the items that was found. Automated search is helpful when a user wants to explore a new topic. The automated search produces a list of candidate pages that may contain information. The user reviews each page in the list to see whether the contents are related to topic or not. If so, the user records the location or if not user moves on to the page in the list. Search mechanisms uses a similar method of search as in the telephone book i.e. before any user invoke the search mechanism a computer program contacts computers on the Internet, gathers a list of available information, sorts the list and then stores the result on a local disk on the computer that runs a search server. When a user invokes a search, the user client program that contacts the server. The client sends a request that contains the name the user entered. When the request arrives at the server, it consults the list of file names on its local disk and provides the result.
1.12.2 26
Web Browser
The Internet
A Web browser is software program that allows you to easily display Web pages and navigate the Web. The first graphical browser, Mosaic, was developed in Illinois at the National Center for Supercomputing Applications (NCSA). Each browser displays Web-formatted documents a little differently. As with all commercial software, every program has its own special features. The two basic categories of Web browser are: x Text-only browsers: A text-only browser such as Lynx allows you to view Web pages without showing art or page structure. Essentially, you look at ASCII text on a screen. The advantage of a text-only browser is that it displays Web pages very fast. There's no waiting for multimedia downloads. x Graphical browsers: To enjoy the multimedia aspect of the Web, you must use a graphical browser such as Netscape Navigator or NCSA Mosaic. Graphical browsers can show pictures, play sounds, and even run video clips. The drawback is that multimedia files, particularly graphics, often take a long time to download. Graphical browsers tend to be significantly slower than their text-only counterparts. And this waiting time can be stretched even further with slow connections or heavy online traffic. Many different browsers are available for exploring the Internet. The two most popular browsers are Netscape Navigator and Microsoft Internet Explorer. Both of these are graphical browsers, which means that they can display graphics as well as text.
Check Your Progress 3 1.
State whether True or False a) b) c) d) e) f)
1.13
Surfing means that you are sending for specific information on Internet. HTML is used for creating home page for World Wide Web. Hypermedia is same as Hypertext. Netscape these days is one of the widely used browser. Windows 95 provides software for browsing Internet. Hypertext documents contain links to other documents.
SUMMARY
This unit describes the basic concepts about an Internet. Internet is a network of networks where lot of information is available and is meant to be utilized by you. No one owns the Internet. It consists of a large number of Interconnected autonomous networks that connect millions of computers across the world. The unit describes the various tools available on the Internet and the various services provided by the Internet to users. In this unit we have talked about the Electronic mail Usenet and newsgroups, FTP, Telnet and search engines. We also describe the use of frequently asked questions. The unit also describes the importance of Internet addresses. Addresses are essential for virtually everything we do on the Internet. There are many services available on the Internet for document retrieval. For browsing the Internet there are many browsers available such as Gopher and World Wide Web. Both of these browsers are easy to use and most popular browsing mechanisms on the Internet.
1.14
SOLUTIONS/ ANSWERS
Check Your Progress 1 1.
True or false a) b)
False False 27
Scripting Languages
c) d) e) 2.
The TCP/IP networking model has five layers, which are: x x x x x
3.
True True False
The Physical Layer The Data link Layer The Network Layer The Transport Layer The Application layer
Transmission Control protocol provide various facilities which include: x x x x
TCP eliminates duplicate data. TCP ensures that the data is reassembled in exactly the order it was sent TCP resends data when a datagram is lost. TCP uses acknowledgements and timeouts to handle problem of loss.
Check Your Progress 2 1.
True or false a) b) c) d) e) f)
2.
True True True True False True
Addresses are essential for virtually everything we do on the Internet. The IP in TCP/IP is a mechanism for providing addresses for computers on the Internet. Internet addresses have two forms: x x
Person understandable which expressed as words Machine understandable which reexpressed as numbers
Internet addresses are divided into five different types of classes. The classes were designated A through E. class A address space allows a small number of networks but a large number of machines, while class C allows for a large number of networks but a relatively small number of machines per network. 3.
FTP (File Transfer Protocol), a standard Internet protocol. It is the simplest way to exchange files between computers on the Internet. FTP is an application protocol that uses the Internet's TCP/IP protocols. FTP is commonly used to transfer Web page files. Transferring a file via FTP requires two participants: an FTP client program and FTP server program. The FTP client is the program that we run on our computers. The FTP server is the program that runs on the huge mainframe somewhere and stores tens thousands of files.
4.
Telnet is both a TCP/IP application and a protocol for connecting a local computer to a remote computer. Telnet is the Internet remote login service. Telnet protocol specifies exactly how a remote login interacts. The standard specifies how to client contacts the server and how the server encodes output for transmission to the client. To use the Telnet service, one must invoke the local application program and specify a remote machine.
Check Your Progress 3 1.
28
True or false
The Internet
a) b) c) d) e) f)
False True False False True True
29
Scripting Languages
UNIT 2
INTRODUCTION TO HTML
Structure 2.0 2.1 2.2 2.3
Introduction Objectives What is HTML? Basic Tags of HTML 2.3.1 2.3.2 2.3.3
2.4
2.0
30 30 31 32
HTML Tag TITLE Tag BODY Tag
Formatting of Text 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5
2.5 2.6 2.7 2.8
Page No.
34
Headers Formatting Tags PRE Tag FONT Tag Special Characters
Working with Images META Tag Summary Solutions/ Answers
41 43 45 46
INTRODUCTION
You would by now have been introduced to the Internet and the World Wide Web (often just called the Web) and how it has changed our lives. Today we have access to a wide variety of information through Web sites on the Internet. We can access a Web site if we have a connection to the Internet and a browser on our computer. Popular browsers are Microsoft Internet Explorer, Netscape Navigator and Opera. When you connect to a Web site, your browser is presented with a file in a special format by the Web server on the remote computer. The contents of the file are stored in a special format using Hyper Text Markup Language, often called HTML This format is rendered, or interpreted, by the browser and you then see the page of the web site from your computer. HTML is one language in a class of markup languages, the most general form of which is Standard Generalized Markup Language, or SGML. Since SGML is complex, HTML was invented as a simple way of creating web pages that could be easily accessed by browsers. HTML is a special case of SGML. HTML consists of tags and data. The tags serve to define what kind of data follows them, thereby enabling the browser to render the data in the appropriate form for the user to see. There are many tags in HTML, of which the few most important ones are introduced in this unit. HTML files usually have the extension .htm or .html . If you want to create Web pages, you need a tool to write the HTML code for the page. This can be a simple text editor if you are hand-coding HTML. You also have sophisticated HTML editors available that automate many (though not all) of the tasks of coding HTML. You also need a browser to be able to render your code so that you can see the results.
2.1
OBJECTIVES
After going through this unit you should be able to learn:
30
x basic concepts of HTML; x basic tags of HTML; x how to control text attributes such as the font;
C h e t a b l e o f c o n t e n t s s h o u l d b e u p d a t e d
x how to work with images in HTML; and x significance of Meta Tag
Introduction to HTML
The unit covers only the simpler concepts of HTML and does not by any means deal with the subject comprehensively.
2.2
WHAT IS HTML?
As indicated earlier, HTML stands for HyperText Markup Language. HTML provides a way of displaying Web pages with text and images or multimedia content. HTML is not a programming language, but a markup language. An HTML file is a text file containing small markup tags. The markup tags tell the Web browser, such as Internet Explorer or Netscape Navigator, how to display the page. An HTML file must have an htm or html file extension. These files are stored on the web server. So if you want to see the web page of a company, you should enter the URL (Uniform Resource Locator), which is the web site address of the company in the address bar of the browser. This sends a request to the web server, which in turn responds by returning the desired web page. The browser then renders the web page and you see it on your computer. HTML allows Web page publishers to create complex pages of text and images that can be viewed by anyone on the Web, regardless of what kind of computer or browser is being used. Despite what you might have heard, you don t need any special software to create an HTML page; all you need is a word processor (such as Microsoft Word) and a working knowledge of HTML. Fortunately, the basics of HTML are easy to master. However, you can greatly relieve tedium and improve your productivity by using a good tool. A simple tool is Microsoft FrontPage that reduces the need to remember and type in HTML tags. Still, there can always be situations where you are forced to handcode certain parts of the web page. HTML is just a series of tags that are integrated into a document that can have text, images or multimedia content. HTML tags are usually English words (such as blockquote) or abbreviations (such as p for paragraph), but they are distinguished from the regular text because they are placed in small angle brackets. So the paragraph tag is <p>, and the blockquote tag is <blockquote>. Some tags dictate how the page will be formatted (for instance, <p> begins a new paragraph), and others dictate how the words appear (<b> makes text bold). Still others provide information - such as the title - that doesn t appear on the page itself. The first thing to remember about tags is that they travel in pairs. Most of the time that you use a tag - say <blockquote> - you must also close it with another tag - in this case, </blockquote>. Note the slash - / before the word blockquote ; that is what distinguishes a closing tag from an opening tag. The basic HTML page begins with the tag <html> and ends with </html>. In between, the file has two sections - the header and the body. The header - enclosed by the <head> and </head> tags - contains information about a page that will not appear on the page itself, such as the title. The body - enclosed by <body> and </body> - is where the action is. Everything that appears on the page is contained within these tags. HTML pages are of two types: x Static
x Dynamic Static Pages Static pages, as the name indicates, comprise static content (text or images). So you can only see the contents of a web page without being able to have any interaction with it.
31
Scripting Languages
Dynamic Pages Dynamic pages are those where the content of the web page depend on user input. So interaction with the user is required in order to display the web page. For example, consider a web page which requires a number to be entered from the user in order to find out if it is even or odd. When the user enters the number and clicks on the appropriate button, the number is sent to the web server, which in turn returns the result to the user in an HTML page.
2.3
BASIC TAGS OF HTML
Let us now look at tags in more detail. A <TAG> tells the browser to do something. An ATTRIBUTE goes inside the <TAG> and tells the browser how to do it. A tag can have several attributes. Tags can also have default attributes. The default value is a value that the browser assumes if you have not told it otherwise. A good example is the font size. The default font size is 3. If you say nothing the size attribute of the font tag will be taken to have the value 3. Consider the example shown in Fig. 2.1. Type the code specified in the figure in a text editor such as notepad and save it as fig1.html . To render the file and see your page you can choose one of two ways: 1) Find the icon of the html file you just made (fig1.htm) and double click on it. Or- 2) In Internet Explorer, click on File/Open File and point to the file (fig1.htm).
Figure 2.1: A Simple Web Page
<HTML> <!- - This is a comment - - > <HEAD> <TITLE> IGNOU </TITLE> </HEAD> <BODY> This is my first web page. </BODY> </HTML>
2.3.1 HTML Tag
32
As shown in Figure.2.1, <HTML> is a starting tag. To delimit the text inside, add a closing tag by adding a / to the starting tag. Most but not all tags have a closing tag. It is necessary to write the code for an HTML page between <HTML> and </HTML>. Think of tags as talking to the browser or, better still, giving it instructions. What you have just told the browser is 'this is the start of an HTML document' (<HTML>) and 'this is the end of an HTML document' (</HTML>). Now you need to put some matter in between these two markers.
Every HTML document is segregated into a HEAD and BODY. The information about the document is kept within <HEAD> tag. The BODY contains the page content.
Introduction to HTML
2.3.2 TITLE Tag The only thing you have to concern yourselves with in the HEAD tag (for now) is the TITLE tag. The bulk of the page will be within the BODY tag, as shown in Figure.2.1. <HEAD> <TITLE> IGNOU </TITLE> </HEAD> Here the document has been given the title IGNOU. It is a good practice to give a title to the document created. What you have made here is a skeleton HTML document. This is the minimum required information for a web document and all web documents should contain these basic components. Secondly, the document title is what appears at the very top of the browser window.
2.3.3 BODY Tag If you have a head, you need a body. All the content to be displayed on the web page has to be written within the body tag. So whether text, headlines, textbox, checkbox or any other possible content, everything to be displayed must be kept within the BODY tag as shown in Figure 2.1. Whenever you make a change to your document, just save it and hit the Reload/Refresh button on your browser. In some instances just hitting the Reload/Refresh button doesn t quite work. In that case hit Reload/Refresh while holding down the SHIFT key. The BODY tag has following attributes: a. BGCOLOUR: It can be used for changing the background colour of the page. By default the background colour is white. b. BACKGROUND: It is used for specifying the image to be displayed in the background of the page. c. LINK: It indicates the colour of the hyperlinks, which have not been visited or clicked on. d. ALINK: It indicates the colour of the active hyperlink. An active link is the one on which the mouse button is pressed. e. VLINK: It indicates the colour of the hyperlinks after the mouse is clicked on it. f. TEXT: It is used for specifying the colour of the text displayed on the page. Consider the following example: <HTML> <TITLE> IGNOU</TITLE> <BODY BGCOLOUR="#1234567" Welcome to IGNOU </BODY>
TEXT = #FF0000 >
33
Scripting Languages
</HTML>
Figure 2.2: A Web Page with a Background Colour
The values specified for BGCOLOUR and TEXT tags indicate the colour of the background of the page and that of the text respectively. These are specified in hexadecimal format. The range of allowable values in this format is from #000000 to #FFFFFF . The # symbol has to precede the value of the colour so as to indicate to the browser that has to be interpreted as a hexadecimal value. In this six digit value, the first two digits specify the concentration of the colour red, the next two digits specify the concentration of the colour green and the last two digits specify the concentration of the colour blue. So the value is a combination of the primary colours red, green and blue and that is why it is called RGB colour. If we specify the value #FF0000 , the colour appears to be red. #000000 gives black and #FFFFFF gives the colour white. You also have the option of specifying the colour by giving its name, like: <BODY TEXT = WHITE >. You can also specify a background image instead. (Note that the image should be in the same folder as your HTML file. More on this below). <HTML> <BODY BACKGROUND="swirlies.gif"> Welcome to INDIA </BODY> </HTML>
Figure 2.3: A Web Page with an Image in the Background
2.4
FORMATTING OF TEXT
Text formatting, in other words presenting the text on an HTML page in a desired manner, is an important part of creating a web page. Let us understand how we can lay out of text controls its appearance on a page.
2.4.1 Headers 34
Headers are used to specify the headings of sections or sub-sections in a document. Depending on the desired size of the text, any of six available levels (<H1> to <H6>) of headers can be used. Figure 2.4 shows the usage and varying size of the rendered text depending upon the tag used.
Introduction to HTML
<HTML> <HEAD> <TITLE> IGNOU</TITLE> </HEAD> <BODY> <CENTER> <H1> Header Level 1</H1> <H2> Header Level 2</H2> <H3> Header Level 3</H3> <H4> Header Level 4</H4> <H5> Header Level 5</H5> <H6> Header Level 6</H6> </CENTER> </BODY> </HTML>
Figure 2.4: Rendering of the Six Header Levels
There is no predefined sequence for using the different levels of the header tags nor any restrictions on which one can be used. So the user has the option of using any level of header tag anywhere in the document. If you want to center text on a page, use the CENTER tag. The text written between <CENTER> and </CENTER> tag gets aligned in the center of the HTML page. As seen in Figure 2.4, the maximum size of the text is displayed using the <H1> tag. So the size goes in decreasing order with the increasing order of the level (i.e. From <H1> to <H6>).
2.4.2 Formatting Tags Let us now look at some more tags that can be used to format text. These are all given in the example shown in Figure 2.5. <HTML> <HEAD> <TITLE> IGNOU</TITLE> </HEAD> <BODY> <B> IGNOU </B> provides several <I> programmes </I> in the <B><I>Computer </I></B> stream. <P> One of the <I> programmes </I> is <B><U> MCA</U></B> </P> <B>MCA </B> stands for <TT> Master Of Computer Applications </TT> <BR>
35
Scripting Languages
<S>For MCA</S> <B> IGNOU </B> is considered to be one of the premier universities. <BR> <STRONG>IGNOU</STRONG> believes in <STRONG><EM> Quality</EM></STRONG> education <BR> <P> According to <CITE> IGNOU, </CITE> <B> MCA<B> is one of its best programmes offering convenient timings to the student so that s/he can pursue the course while working at a job. </P> <BLOCKQUOTE> For convenience all the courses offered by IGNOU can be seen on its website. A student has also been provided the flexibility of seeing all the information regarding admission to the next semester, examination result etc. on its website. </BLOCKQUOTE> <HR NOSHADE> <B> IGNOU contact details are : <ADDRESS> IGNOU, <BR> MAIDAN GARHI, <BR> NEW DELHI Â&#x2013; 110 068 <BR> Website : www.ignou.ac.in </ADDRESS> </BODY> </HTML>
Figure 2.5: An Example showing Various Formatting Tags.
a. BOLD: The text can be displayed in boldface by writing it in between the <B> and </B> tags. b. ITALICS: It starts with <I> and ends with </I> tag. It is used to display the text in italics. c. UNDERLINE: It is used for underlining the text to be displayed. The <U> tag is used for this purpose. These tags can be nested. So in order to see the text in boldface, in italics and underlined, it should be placed between the <B><I><U> and </U></I></B> tags. Note that the closing tags are written in reverse order, because any tag used within some other tag should be closed first. d. PARAGRAPH: If you want to display the text in the form of paragraphs, then the <P> tag should be used.
36
e. TT: The <TT> tag is used for displaying text in a fixed width font similar to that of a typewriter.
f. STRIKE: If you want the text to be marked with a strikethrough character, place it within the <S> and </S> tags.
Introduction to HTML
g. STRONG: There are certain text-based browsers that do not render the text as boldfaced. So you can use the <STRONG> tag instead of the <B> tag. This displays the text to stand out in the most appropriate manner for the browser. h. EM: Just as the <STRONG> tag corresponds to the <B> tag, the <EM> can be used instead of the <I> tag. The reason for using it is the same as for the <STRONG> tag. The <EM> tag is used for emphasizing the text in the manner most appropriate to the browser. i. BR: This tag is used for inserting a line break. The text written after the <BR> tag is displayed from the beginning of the next line onwards. This tag does not need a corresponding terminating tag. j. HR: This tag puts a horizontal line on the page. It has the following attributes: x
x x x
ALIGN: It is used for aligning the line on the page. The possible values of this attribute are LEFT, RIGHT, and CENTER. It is useful when the width of the line is less than the width of the page. NOSHADE: This attribute is used to prevent any shading effect. SIZE: It is used for specifying the thickness of the line. WIDTH: You can set the width of a line using this attribute. The value can be specified either in pixels or as a percentage of the width of the page, e.g., <HR WIDTH = Â&#x201C;30%Â&#x201D;>.
k. BLOCKQUOTE: This tag indents the left margin of the text. It is used for displaying the text as quoted text as shown in Figure 2.5. l. ADDRESS: This tag, as shown in Figure 2.5, displays the text in italics. m. CITE: The text placed in between the <CITE> and </CITE> tags is rendered in italics by the browser.
2.4.3 PRE Tag This tag is used to present the text exactly as written in the code, including whitespace characters. It is terminated by a </PRE> tag. Consider the example shown in Figure 2.6 to understand how this tag works. <HTML> <HEAD> <TITLE>IGNOU</TITLE> </HEAD> <BODY> <PRE> IGNOU also offers a virtual campus. Studying through the virtual campus is a new concept in the field of education and this is the first such experiment in India. While studying through the virtual campus mode, students have access to the following learning resources and experiences: x Satellite based interactive tele-conferencing sessions. x Viewing recorded video sessions. x Computer based tutorials on CD-ROM. Printed booklets for specific
37
Scripting Languages
</PRE> </BODY> </HTML>
Figure 2.6: Presenting Preformatted Text
As shown in Figure 2.6, the format of the text presented in the browser remains the same as written in the code. If we do not use the <PRE> tag, the browser condenses the white space when presenting the text on the web page.
2.4.4 FONT Tag HTML provides the flexibility of changing the characteristics of the font such as size, colour etc. Every browser has a default font setting that governs the default font name, size and colour. Unless you have changed it, the default is Times New Roman 12pt with the colour being black. Now with IE 6.0 (Internet Explorer) you can specify font names other than the default, such as ARIAL and COMIC SANS. Consider the example shown in Figure 2.7. <HTML> <HEAD> <TITLE> IGNOU </TITLE> </HEAD> <BODY BGCOLOUR="#FFFFFF"> <CENTER> Welcome to <FONT SIZE=6>INDIA </FONT><BR> Welcome to <FONT FACE = ARIAL SIZE=6>INDIA </FONT><BR> Welcome to <FONT FACE = ARIAL SIZE=6 COLOUR = BLUE >INDIA </FONT><BR> </CENTER> </BODY> </HTML>
38
Introduction to HTML
Figure 2.7: Using the FONT Tag
Let us look at the syntax of the <FONT> tag with its different attributes. <FONT FACE = name SIZE = n colour = #RGB > The attributes are: a. FACE: This attribute is used to change the font style. Its value should be given as the name of the desired font. But the font name specified must be present in the system, otherwise the default-name is used by the browser. The font will only display if the user has that font installed on the computer. Arial and Comic Sans MS are pretty widely distributed with Microsoft Windows. So if you are using a Microsoft supplied operating system, these are likely to be available on your computer. In Figure 2.7, you see an example of the Arial font being used. b. SIZE: Font can be displayed in any of the 7 sizes: Tiny 1
Small
Regular
2
3
Extra Medium 4
Large
Real Big
Largest
5
6
7
c. COLOUR: With this attribute you can change the desired font colour. The values can be specified either by using the hexadecimal format as already described, i.e., #RGB, or by the name of the colour. The hex code of the colour has been explained earlier in this unit. As shown in Figure 2.7, the value of the colour attribute in the third line has been specified as Blue . So the text present in the code between the <FONT> and </FONT> tags appears in blue. By default the colour of the text is black. If we specify the text colour in the <FONT> tag then this value overrides the colour value, if any, specified in the <BODY> tag.
2.4.5 Special Characters You have seen that there are certain characters that have special meaning in HTML code. For example, the < and > characters delimit tags. If you want to display such characters on the web page, you have to take care that the characters are not interpreted and are displayed literally. To display the < character, it can be specified as &lt . The & interprets the lt as the < symbol and displays it. But now what if you want to display the & symbol itself? Simply writing & in the code will not display it. But first, let us see how to display some special characters. Consider the example shown in Figure 2.8 and also look at Table 2.1. <HTML> <BODY BGCOLOUR=s#FFFFFF > This is &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Used for&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; blank space. <BR> &lt; is the Less Than symbol <BR> &gt; is the Greater Than symbol <BR>
39
Scripting Languages
&amp; is the ampersand symbol <BR> &quot; is the quotation mark symbol <BR> &agrave; is small a, grave accent symbol <BR> &Agrave; is capital a, grave accent symbol <BR> &ntilde; is small n, tilde symbol <BR> &Ntilde; is capital n, tilde symbol <BR> &uuml; is the umlaut small u symbol <BR> &Uuml; is the umlaut <BR> &#144; is the symbol Delta<BR> &#188; is the quarter symbol <BR> &#189;is the hay symbol <BR> </BODY> </HTML>
C l e a s e c o r r e c t t h i s t o s h o ... [1]w C l e a s e
Figure 2.8: Entering Special Characters
The special characters shown in Figure 2.8 are some of the most frequently used characters displayed on web pages. Each of the special characters can be displayed by using its character sequence after the & . These can be seen in the following Table 2.1. Table 2.1: Displaying Special Characters
Special Character
Character Symbol
Description
< > &
&lt; &gt; &amp; &quot; &nbsp; &agrave; &Agrave; &ntilde; &Ntilde; &uuml; &Uuml; &#144; &#188; &#189;
Less-than symbol Greater-than symbol Ampersand Quotation Mark Blank space small a, grave accent capital A, grave accent small n, tilde capital N, tilde umlaut small u umlaut capital U delta One Fourth Half
à À Ė Ñ ü Ü û ¼ ½
40
The browser will display your text in a steady stream unless you tell it to do so otherwise with line breaks. It will reduce any amount of white space to a single space. If you want more spaces, you must use the space character (&nbsp;). If you hit Return (or Enter) while you are typing, the browser will interpret that as a space unless there is already a space there.
c o r r e c t t h i s t o s ... [2]h C l e a s e o m i t t h e d e l t a s y ... [3]m
Consider another example, which shows how to display multiple blank lines. Code a space character with a line break for each blank line you want.
Introduction to HTML
<HTML> <HEAD> <TITLE>IGNOU</TITLE> </HEAD> <BODY BGCOLOUR="#FFFFFF"> Welcome to <BR> &nbsp;<BR> &nbsp;<BR> &nbsp;<BR> &nbsp;<BR> &nbsp;<BR>INDIA </BODY> </HTML>
Check Your Progress 1 Describe yourself on a web page and experiment with colours in BGCOLOUR, TEXT, LINK, VLINK, and ALINK. Try out different fonts and sizes and also the other tags you have studied so far, such as the <PRE> tag, as well.
Check Your Progress 2 Add the following information to the web page that you created above. Job: Software Engineer The requirement for the job is that the person should be B.E./M.E/M.C.A. having an aggregate score of 70% or above. The job is project based, so it would be for ½ year only initially. ¼ of the salary would be deducted towards income tax, PF and other statutory deductions.
2.5
WORKING WITH IMAGES
Let us now make our web pages more exciting by putting in images.
You specify an image with the <IMG> (image) tag. Earlier in this unit, displaying the images on a page was explained using the BACKGROUND attribute of the <BODY> tag, which displays the image as the background image. Background images make the page heavy and hence the page takes a considerable amount of time to load. But the <IMG>tag can be used for displaying an image with the desired height and width. Let us look at an example (Figure 2.9). <HTML> <HEAD> <TITLE>IGNOU</TITLE> </HEAD> <BODY BGCOLOUR="#FFFFFF"> <IMG SRC="image.gif" WIDTH=130 HEIGHT=101 ALT = "IMAGE IS TURNED OFF" ALIGN = "BOTTOM" BORDER = 2> This text is placed at the middle of the image.
41
Scripting Languages
</BODY> </HTML>
Figure 2.9: Displaying Images on a Web Page
Let us take a look at the syntax of the <IMG> tag: <IMG SRC = FILENAME.GIF WIDTH = value HEIGHT = value ALT = alternate text BORDER = value ALIGN = value > a. SRC: This attribute specifies the pathname to the source file that contains the image. The value in the above example, "image.gif", means that the browser will look for the image named image.gif in the same folder (or directory) as the html document itself. b. WIDTH: This is used for specifying the desired width of the image. c. HEIGHT: This is used for specifying the desired height of the image. d. BORDER: An important attribute of the IMG tag is BORDER. This attribute specifies the width of the border of the image. By default it is 0, i.e. there is no border. As shown in Figure 2.9 the image image.gif has been given a border 2 pixel wide. The following code gives a wider border to the above image. <BODY BGCOLOUR="#FFFFFF"> <IMG SRC="image.gif" WIDTH=130 HEIGHT=101 BORDER=10> </BODY> e. ALT: Another IMG attribute that is important is ALT. ALT is sort of a substitute for the image that is displayed or used when the user is using a browser that does not display images. Someone may be using a text only browser, he may have image loading turned off for speed or he may be using a voice browser (a browser where the web page is read out). In those cases, that ALT attribute could be very important to your visitor as it could be used (given the proper text) to describe the image that is not on the screen.
Check Your Progress 3 Create your own background with a paint program using the following steps: x Create a small graphic with the paint program. x Save it as a .jpg or .gif file in the same subdirectory (or folder) that you are keeping the html page that you have been creating. 42
x Create a simple HTML file with a background, and put the name of your .jpg or
.gif file after the BACKGROUND attribute. (Note: You can easily create the simple html file by copying the html tags above from this web page and pasting them into your new html file. Be sure to substitute the name of your .jpg or .gif file for Â&#x201C;image.gifÂ&#x201D;).
Introduction to HTML
x Save the simple html file that you have just created and open it with your web browser. What do you see? When you are finished, return to this page and continue.
2.6
META TAG
You might be aware of, and perhaps may have used, search engines such as Google to look for web pages on a topic of interest. The META Tag comes in useful if you want your web page to be easily locatable by search engines. When you enter a search string, the search engine shows web pages containing that string, provided the web page has used those in META tag appropriately. The search engine interacts with the META tag of the HTML page in order to find the required string. Information inside a Meta element should be such as to describe the document. Consider the following example (Figure 2.10). <HTML> <HEAD> <TITLE>IGNOU</TITLE> <META NAME="author" CONTENT="IGNOU"> <META NAME="description " CONTENT="This website shows you the different courses offered by IGNOU"> <META NAME="keywords " CONTENT=" Website, different courses offered, IGNOU,mca,bca"> </HEAD> <BODY> <P> The meta attributes of this document identify the author and courses offered. </P> </BODY> </HTML>
Figure 2.10: Using the META Tag
Meta tags have two attributes: a. NAME: This attribute is used for identifying the type of META tag you are including. b. CONTENT: This attribute is used to specify the keywords that the search engine catalogs. Consider the following code of the example shown in Figure 2.10.
43
Scripting Languages
<META NAME= description CONTENT="This website shows you the different courses offered by IGNOU"> The CONTENT attribute provides the list of words in the form of a sentence to the search engine. So if someone searches for one of the keywords listed by you in the META tag, then your web site would also appear in the result of the search. It is useful to include META tags that include as many keywords as possible. This makes the web page more likely to show up in a search. You can also specify keywords by separating them by commas as shown in the following code fragment of Figure 2.10. <META NAME= keywords CONTENT= Website, different courses offered, IGNOU,mca,bca > You can use either of the methods of specifying the META tag as convenient. Consider another example shown in Figure 2.11. This example demonstrates how to redirect a user if your site address has changed. <HTML> <HEAD> <TITLE>IGNOU</TITLE> <META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://www.ignou.ac.in"> </HEAD> <BODY> <P> Sorry! We have moved! The new URL is: www.ignou.ac.in </p> <p> You will be redirected to the new address in five seconds. </p> </BODY> </HTML>
Figure 2.11: Redirecting a User if the Site has Moved
Consider the following code of Figure 2.11 <META HTTP-EQUIV= Refresh CONTENT= 5;URL=http://www.ignou.ac.in >
44
It indicates to the browser that the page has to be refreshed in 5 seconds with the new URL http://www.ignou.ac.in . So when the user sees this page by specifying its original URL,the browser is redirected to the webpage www.ignou.ac.in after five seconds. This type of redirection is useful when you want that a user accessing your old website should automatically be redirected to the new website address.
Now let us consider an example that makes use of almost all the tags explained so far.
Introduction to HTML
Case Study: Design a single page web site for a store listing the products and services offered. The store sells computers and related products. The site should contain images explaining the products graphically. <HTML> <HEAD> <TITLE> SOLVED CASE STUDY FOR HTML </TITLE> </HEAD> <BODY LINK="#0000ff" VLINK="#800080"> <P ALIGN="CENTER">&nbsp;</P> <B><I><U><FONT SIZE=5><P ALIGN="CENTER">ABC Products</P> </FONT> </B></O></I><P>ABC store sells the latest in computers and computer products. Besides, we also stock stationery.</P> <P ALIGN="CENTER"><HR></P> <B><U><P>Product 1.</P> </U></B><P><IMG SRC="Image1.gif" WIDTH=127 HEIGHT=102></P> <P>This is a notebook. It has 200 pages. Each page has three columns with a heading for date, name and address. Its cost is Rs. 100 only.</P> <P ALIGN="CENTER"><HR></P> <B><U><P>Product 2.</P> </U></B><P><IMG SRC="Image2.gif" WIDTH=127 HEIGHT=102></P> <P>This is a computer. It has 512 MB RAM with a 2.3 GHz processor and an 80 GB HDD. Its cost is Rs. 30,000 only. It is pre-loaded with Windows 2003. You can buy Microsoft Office software too from us.</P></BODY> </HTML>
Check Your Progress 4 Design a single page web site for a university containing a description of the courses offered. It should also contain some general information about the university such as its history, the campus, its unique features and so on. The site should be coloured and each section should have a different colour.
2.7
SUMMARY
In this unit we have learnt how to create simple HTML pages. The contents of the page have to be written within the BODY tag. The HEAD tag includes the title of the document. An important part of displaying a page is the proper formatting of the text. There exist many tags to do this job. The headers of the sections and sub-sections of the document can be displayed using the header tags (<H1> to <H6>). The <P> tag is used to demarcate a paragraph. The <B>, <I> and <U> tags are used to mark the text as bold, italics and underlined respectively. The <STRONG> and <EM> tags are used to emphasize the text in bold and italics. The <BLOCKQUOTE> tag indents the left margin of the text. The <ADDRESS> tag displays the text in italics. Any text placed between the <CITE> and </CITE> tags, is rendered in italics by the browser. You can display the text exactly as written in the code using the <PRE> tag. The size, colour and the type of the font can be specified using the <FONT> tag. The <IMG> tag is used for inserting images in the document. We have also looked at the very useful <META> tag. This tag is used to redirect the users to other pages, and to provide information about the page.
References: INTERNET & WORLD WIDE WEB BY DEITEL, DEITEL & NIETO HANDS ON HTML BY GREG ROBERTSON
45
Scripting Languages
2.8
SOLUTIONS/ ANSWERS
Check Your Progress 1 1.
<HTML> <HEAD> </HEAD> <BODY LINK="#0000ff" VLINK="#ffff99" BGCOLOUR="#FFFFFF"> <B><FONT SIZE=4><FONT FACE="Arial, sansserif">Ram</FONT></FONT></B></P> <B><U><FONT SIZE=3><FONT FACE="Arial, sans-serif">Qualification</FONT></FONT></U></B></P> <FONT FACE="Arial, sans-serif"><B>Title</B></FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <FONT FACE="Arial, sans-serif"><B>Authority</B></FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT FACE="Arial, sans-serif"><B>Division %</B></FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <FONT FACE="Arial, sans-serif"><B>Year </B></FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR> <FONT FACE="Arial, sans-serif">10</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT FACE="Arial, sans-serif">CBSE Board</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT FACE="Arial, sans-serif">60.00%</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT FACE="Arial, sans-serif">1994</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR><FONT FACE="Arial, sans-serif">12 </FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT FACE="Arial, sans-serif">CBSE Board</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
46
<FONT FACE="Arial, sans-serif">67.00%</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<FONT FACE="Arial, sans-serif">1996</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR><FONT FACE="Arial, sans-serif">B.E.</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;& nbsp;&nbsp;&nbsp;&nbsp
Introduction to HTML
<FONT FACE="Arial, sans-serif">Delhi University</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;& nbsp;&nbsp;&nbsp;&nbsp <FONT FACE="Courier, monospace">I</FONT><FONT FACE="Arial, sansserif"> Division</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;& nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;&n bsp;&nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp; <FONT FACE="Arial, sans-serif">1999</FONT> <BR><BR><B><U><FONT SIZE=3><FONT FACE="Arial, sansserif">Personal Details</FONT></FONT></U></B> <PRE> <FONT FACE="Arial, sans-serif"> Father's Name: Mr. Shyam mehta Date of Birth: 23 Jan, 1976. </FONT> <FONT FACE="Arial, sans-serif"> Address: A2-81b, East Of kailash,New Delhi. Tel: 29090909,9220101010</FONT> <FONT FACE="Arial, sans-serif"> Email: ram@hotmail.com Sex: Male Marital Status: Single Interests and activities: Troubleshooting hardware and software problems. </FONT> </PRE> </BODY> </HTML>
Check Your Progress 2 2.
<HTML> <HEAD> </HEAD> <BODY LINK="#ffff00" VLINK="#ffff99" BGCOLOUR="#ffffff"> <PRE> <U><B><FONT FACE="Times New Roman, serif">Job: Software Engineer </FONT></B></U> <FONT FACE="Times New Roman, serif"> The requirement for the job is that the person should be B.E./M.E/M.C.A having an aggregate score of 70% or above. The job is project based, so it would be for ½ year only initially. ¼ of the salary would be deducted towards income tax, PF and other statutory deductions. </PRE> <B><FONT SIZE=4><FONT FACE="Arial, sans-
Comment: Please correct the solution to reflect the pre-formatted text as amended in the question.
47
Scripting Languages
serif">Ram</FONT></FONT></B></P> <B><U><FONT SIZE=3><FONT FACE="Arial, sans-serif">Qualification</FONT></FONT></U></B></P> <FONT FACE="Arial, sans-serif"><B>Title</B></FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <FONT FACE="Arial, sans-serif"><B>Authority</B></FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT FACE="Arial, sans-serif"><B>Division %</B></FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; <FONT FACE="Arial, sans-serif"><B>Year </B></FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR> <FONT FACE="Arial, sans-serif">10</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT FACE="Arial, sans-serif">CBSE Board</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT FACE="Arial, sans-serif">60.00%</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT FACE="Arial, sans-serif">1994</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR><FONT FACE="Arial, sans-serif">12 </FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT FACE="Arial, sans-serif">CBSE Board</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT FACE="Arial, sans-serif">67.00%</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT FACE="Arial, sans-serif">1996</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR><FONT FACE="Arial, sans-serif">B.E.</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;& nbsp;&nbsp;&nbsp;&nbsp
48
<FONT FACE="Arial, sans-serif">Delhi University</FONT>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;& nbsp;&nbsp;&nbsp;&nbsp
Introduction to HTML
<FONT FACE="Courier, monospace">I</FONT><FONT FACE="Arial, sansserif"> Division</FONT> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;& nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp&nbsp;&nbsp;&n bsp;&nbsp;&nbsp&nbsp;&nbsp;&nbsp;&nbsp; <FONT FACE="Arial, sans-serif">1999</FONT> <BR><BR><B><U><FONT SIZE=3><FONT FACE="Arial, sansserif">Personal Details</FONT></FONT></U></B> <PRE> <FONT FACE="Arial, sans-serif"> Father's Name : Mr. Shyam mehta Date of Birth : 23 Jan,1976. </FONT> <FONT FACE="Arial, sans-serif"> Address: A2-81b, East Of kailash,New Delhi. Tel.: 29090909,9220101010</FONT> <FONT FACE="Arial, sans-serif"> Email: ram@hotmail.com Sex : Male Marital Status : Single Interests and activities : Troubleshooting hardware and software problems. </FONT> </PRE> </FONT> </BODY> </HTML>
Check Your Progress 3 1.
<HTML> <HEAD> <TITLE>IGNOU</TITLE> </HEAD> <BODY BGCOLOUR="#FFFFFF"> <IMG SRC="abc.jpg" WIDTH=130 HEIGHT=101 ALT = " IMAGE IS TURNED OFF" ALIGN = "MIDDLE" BORDER = 2> This text is placed at the middle of the image. </BODY> </HTML>
Comment: This solution does not reflect an answer to the question. There the image was to form the page background, for instance. Please amend the solution.
Check Your Progress 4 1.
<HTML> <HEAD> </HEAD> <BODY LINK="#0000ff" VLINK="#800080" BGCOLOUR="#ff6600"> <P ALIGN="CENTER">&nbsp;</P> <B><I><U><FONT SIZE=4><P ALIGN="CENTER">IGNOU</P> </I></U></FONT><FONT SIZE=2><P>I</B>ndira <B>G</B>andhi <B>N</B>ational <B>O</B>pen University is a very old and reputed
49
Scripting Languages
University. IGNOU offers various types of courses that are both academic and technical. </P> <P>&nbsp;</P> </FONT><FONT SIZE=4 COLOUR="#0000ff"><P>Master in Computer Applications</P> </FONT><FONT COLOUR="#0000ff"><P>This course has 6 semesters and the total duration is 3 years. The maximum duration allowed for completing the course is 7 years. The fee per semester is Rs 5000 </FONT> </P> <FONT SIZE=4 COLOUR="#00ff00"><P>Bachelor in Computer Applications</P> </FONT><FONT COLOUR="#00ff00"><P>This course has 6 semesters and the total duration is 3 years. The maximum duration allowed for completing the course is 6 years. The fee per semester is Rs 3000</P> </FONT><FONT SIZE=4 COLOUR="#ff0000"><P>Bachelor in Information Technology</P> </FONT><FONT COLOUR="#ff0000"><P>This course has 6 semesters and the total duration is 3 years. The maximum duration allowed for completing the course is 5 years. The fee per semester is Rs 10,000.</P></FONT></BODY> </HTML>
50
Page 40: [1] Comment
milind
Please correct this to show a small Â&#x201C;aÂ&#x201D; with a grave accent. Page 40: [2] Comment
milind
Please correct this to show a small n with a tilde. Page 40: [3] Comment
milind
Please omit the delta symbol if it is not displaying correctly.
Advanced HTML
UNIT 3
ADVANCED HTML
Structure
Page No.
3.0 3.1 3.2
Introduction Objectives Links
3.3
Lists
51 51 52
Anchor tag
53
3.3.1 Unordered Lists 3.3.2 Ordered Lists 3.3.3 Definition Lists
3.4
Tables
55
3.4.1 TABLE, TR and TD Tags 3.4.2 Cell Spacing and Cell Padding 3.4.3 Colspan and Rowspan
3.5
Frames
60
3.5.1 Frameset 3.5.2 FRAME Tag 3.5.3 NOFRAMES Tag
3.6
Forms 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7
3.7
Some Special Tags 3.7.1 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7
3.8 3.9
3.0
66 FORM and INPUT Tag Text Box Radio Button Checkbox SELECT Tag and Pull Down Lists Hidden Submit and Reset
71
COLGROUP THEAD, TBODY, TFOOT _blank, _self, _parent, _top IFRAME LABEL Attribute for <SELECT> TEXTAREA
Summary Solutions/ Answers
79 80
INTRODUCTION
In the previous unit you have learned the basics of HTML. After learning about how to make static web pages, let us now learn how to develop Interactive Web sites. A good web site should be interactive and easy to use and understand. Of course, very simple web sites that merely need to present some static information may not provide for user input. Interactive web sites are those that are capable of taking input from the user and presenting the output on the basis of the inputs given. To be able to do so, you will need more HTML features than have been covered so far. Features like Links, Lists, Tables, Input controls will allow you to create sophisticated web pages that respond dynamically to user input. HTML provides all these features using different tags such as A, UL, OL, INPUT, FRAMESET and others, that you will study in this unit. Besides the tags themselves you will also learn about their common attributes.
3.1
OBJECTIVES
This unit will enable you to create sophisticated, interactive web pages. After going through this unit you will be able to learn: x x
links using ANCHOR tag; ordered, unordered and definition Lists; 51
Scripting Languages
x x x
3.2
tables; frames to divide a web page into different parts; and forms for accepting user input.
LINKS
Hyperlinks, or links are one of the most important characteristics of web pages. A link moves us from the current page to a destination that is specified in the HTML page. URL Stands for Universal Resource Locator. A URL is just an address that tells the browser precisely where on the Internet the resource is to be found. The process of parsing the URL and actually connecting to the resource can be somewhat complex and does not concern us here.
3.2.1 Anchor Tag The Anchor tag is used to create links between different objects like HTML pages, files, web sites etc. It is introduced by the characters <A> and terminated by </A>. HREF is the most common attribute of the ANCHOR tag. It defines the destination of the link. <HTML>
<HEAD> <TITLE>IGNOU</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> Go to <A HREF="http://www.ignou.ac.in/">IGNOU!</A> </BODY> </HTML>
As shown in Figure 3.1, the text “IGNOU” present between the <A> and </A> tags becomes the hyperlink. On clicking anywhere on this hyperlink, the browser would attempt to connect to the given URL and the website http://www.ignou.ac.in would open, if possible. An email link can be specified in the same way. We just have to specify the email address instead of a page address as the value of HREF as shown in the following code. On clicking on the link, the default mail program on the user’s computer opens up with a “To:” address as specified in the hyperlink. You can then type your message and send e-mail to that address. <BODY BGCOLOR="#FFFFFF"> Send me <A HREF="mailto:forrest@bubbagump.com">mail</A> </BODY> It is also possible to make an image a link if desired. This is done using the <IMG> tag. Consider the following example. <HTML> <HEAD> <TITLE>IGNOU</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> Go to <A HREF="http://ignou.ac.in/"><IMG SRC="image.gif" WIDTH=130 HEIGHT=101></A> </BODY> </HTML> 52
Advanced HTML
So in the example shown in Figure 3.2, the image becomes the link. When the user clicks on the image, the web site http://www.ignou.ac.in opens up, if possible.
Check Your Progress 1 1.
Create a web page that provides links to five different web pages or to entirely different web sites.
2.
Write HTML code for the following page (the underlined text is linked to another file called link_text)
3.3
LISTS
Lists are used when the data are to be mentioned in the form of points like: causes of a particular issue, list of items etc. Lists break up the monotony of a long paragraph and direct the readerâ&#x20AC;&#x2122;s attention to the essential parts. Lists are segregated into three types, namely Ordered lists, Unordered lists and Definition lists.
3.3.1 Unordered Lists First, we will build an unordered list. Sometimes, these lists are also called bulleted lists. These lists are characterized by list items that do not have numbers. They are used when the points in the list have no particular order. They are delimited by the <UL> and </UL> tags. Each point in the list is delimited by the <LI> and </LI> tags. <HTML> <HEAD> <TITLE>IGNOU</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> What I want for Id <UL> <LI>a big red truck</LI> <LI>an aeroplane that flies</LI> <LI> a nice soft toy</LI> <LI>a drum set</LI> <LI>a Walkman</LI> <LI> extra pocket money</LI> </UL>
Comment: Better give an example that an Indian reader will relate to.
53
Scripting Languages
</BODY> </HTML> The syntax of the <UL> tag is: <UL TYPE=""> where TYPE= "DISC", "SQUARE" or "CIRCLE". <LI> </LI> </UL> The bullet appearance can be changed to be round (a dark circle), a disc or a circle depending on the value of the TYPE attribute. As shown in the Figure 3.3, the list of items are included within the <UL> and </UL> tags. Each list item must be preceded with a <LI> tag.
3.3.2 Ordered Lists Lists having numbered items are known as ordered lists. They are used when the items in the list have a natural order. They can also be used when the number of items in the list needs to be known at a glance. To make an ordered list, simply change the <UL> tag to <OL>. <HTML>
<HEAD> <TITLE>IGNOU</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> What I want for my birthday <OL> <LI>a big red truck</LI> <LI>a toy train</LI> <LI>a Barbie doll</LI> <LI>a drum set</LI> <LI>binoculars</LI> <LI>a month’s extra pocket money</LI> </OL> </BODY> </HTML> The syntax of the <OL> tag is: <OL TYPE="" START=""> where TYPE= "1", "a", "A", "i", "I" and START is the first item number. <LI> </LI> </OL> The type of the numbering format desired should be specified as the value of the TYPE attribute. The possible types are shown above in the syntax. The numbering starts from the START attribute’s value.
3.3.3 Definition Lists Another type of list is a definition list. Definition lists have a heading and the text appears below that. <HTML> <HEAD> <TITLE>IGNOU</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <DL> <DT>10th Amendment </DT>
54
Advanced HTML
<DD>The powers not delegated to the United States by the Constitution, nor prohibited by it to the States, are reserved to the States respectively, or to the people. </DD> </DL> </BODY> </HTML>
A definition list is introduced by the <DL> tag and terminated by </DL>. The Definition heading should be specified between the <DT> and </DT> tags. The Definition should be specified between <DD> and </DD> tags.
Check Your Progress 2 1. Design a web page that looks similar to following page:
3.4
TABLES
In this section you will see how to put tables in your web documents. It is not that a table is simply a combination of rows and columns. If you have ever seen any table in an attractive web page you might be interested to learn how they make good use of the <TABLE> and related tags.
3.4.1 Table, TR and TD Tags Three tags form the essential ingredients for creating a table. TABLE: This is the main tag. It tells the browser that a table follows. It has attributes like size and border width. TR: A TableRow defines a horizontal row that consists of TableData cells. TD: This tag specifies an individual block or cell in a table row. Thus a table is made up of rows, which in turn are made up of cells.
<--This---
----is----
----a----
---Table--- ---Row--> Cell
You are now ready to create some tables! We must stress that if you want to learn how to make quality HTML documents, then you would be spending your time well 55
Scripting Languages
if you teach yourself the tags. In our opinion the best HTML editors to use for beginners are text-based editors. These editors will force you to code HTML yourself. They donâ&#x20AC;&#x2122;t attempt to do it for you. Once you are an expert, you can use other tools to improve your productivity so that you do not have to handcode your pages. Now let us start creating tables. The following example shows some tables with different attributes. <HTML>
<HEAD> <TITLE> IGNOU</TITLE> </HEAD> <BODY> <!- - Table with border = 5 - - > First: Table with border = 5 <TABLE BORDER=5> <TR> <TD>Ajay</TD> </TR> </TABLE> <!- - Table with width = 50%- - > Second: Table with width = 50% <TABLE BORDER=3 WIDTH=50%> <TR> <TD>Ajay</TD> </TR> </TABLE> <!- - Table with width = 50 - - > Third: Table with width = 50 <TABLE BORDER=1 WIDTH=50> <TR> <TD>Ajay</TD> </TR> </TABLE> <!- - Table with height = 75 and align = center and valign=top - - > Fourth: Table with height = 75 and align = center and valign=top <TABLE BORDER=3 WIDTH=100 HEIGHT=75> <TR> <TD ALIGN=CENTER>Ajay</TD> </TR> </TABLE> <!- - Table with an image- - > Fifth: Table with an image <TABLE BORDER=3> <TR> <TD ALIGN=LEFT VALIGN=MIDDLE><IMG SRC="image1.gif" WIDTH=32 HEIGHT=32></TD> </TR> </TABLE> <!- - A complete Table with different sized columns- - > Sixth: A complete Table with different sized columns <TABLE BORDER=3 WIDTH=300 HEIGHT=75> <TR> <TD WIDTH=60%>Ajay</TD> <TD WIDTH=20%>Ramesh</TD> <TD WIDTH=20%>Vijay</TD> </TR> <TR> 56
Advanced HTML
<TD>Pankaj</TD> <TD>Vikas</TD> <TD>Rohan</TD> </TR> </TABLE> </BODY> </HTML>
Figure 3.1: Tables with Different Attributes.
In the first table the BORDER attribute is given a value of 5. The default is no border i.e. border = 0.
Comment: This output cannot come from the code given earlier. From where are “First:”, “Second:” etc coming?
When no sizes are specified, the table is only as big as it needs to be, as shown in the first and third table in Figure 3.6. Specifying a table size is easy. Let us reduce the table size to 50% of the browser window as has been done in the second example. See the output in the second table in Figure 3.6. As you can see in the example there are two ways to specify the table width. Each style has its uses. You can also change the height of a table. The fourth table in Figure 3.6 shows the effect of the changed height. You can control where in the cell the data will appear. For this purpose we use the ALIGN attribute. In the fourth table in Figure 3.6, we have used a center alignment. Similarly, right and left can be used for right and left alignment respectively. The default value is ALIGN=left. This is the value that the browser assumes if you have not told it otherwise. You can also control where data will appear vertically in a cell. For this purpose you specify the VALIGN attribute. In the fourth table, we have used the value center. You can also use top or bottom. Images can also be placed and manipulated in a table data cell. In the folder that contains the document with the HTML code, substitute an IMG tag for text. This is shown in the fifth table. You can also include size attributes with all your image tags. We will not go into the details here, but doing so makes it easier for the browser to display the table and avoids any nasty little surprises while resizing the browser window, for instance. Now, let us look at multiple rows. Suppose three more friends from across the street see what is going on and want to be in your table. We think we will give them their own row. Each row can be assigned a different width for its columns. In the sixth table we have used 60/20/20 as the relative percentage widths of the three columns. The last table shows how to create a table with multiple rows and columns. The WIDTH attributes in the first row carry over to the second row. 57
Scripting Languages
3.4.2 Cell Spacing and Cell Padding Next let us look at a couple of attributes called CELLPADDING and CELLSPACING. Both are part of the <TABLE> tag. CELLPADDING is the amount of space between the border of the cell and the contents of the cell. The default value for this attribute is 1. This is so that any text in the cells does not appear to be sticking to the border. However, you can specify a value of 0 if you wish. The CELLSPACING attribute has a somewhat different meaning. It determines the spacing between adjacent cells. Its default value is 2. The following example shows these and some other important attributes of the <TABLE> tag. <HTML> <HEAD> <TITLE> IGNOU</TITLE> </HEAD> <BODY> First: Table with cellspacing and cellpadding <TABLE BORDER=3 CELLSPACING=7 CELLPADDING=7> <TR> <TD>Ajay</TD> <TD>Vijay</TD> <TD>Rohan</TD> </TR> <TR> <TD>Pankaj</TD> <TD>Vikas</TD> <TD>Sanjay</TD> </TR> </TABLE> Second: Table with colspan <TABLE BORDER=1> <TR> <TD COLSPAN=2>Ajay</TD> <TD>Vijay</TD> </TR> <TR> <TD>Vikas</TD> <TD>Pankaj</TD> <TD>Rohan</TD> </TR> </TABLE> Third: Table with rowspan <TABLE BORDER=1> <TR> <TD ROWSPAN=2>Ajay</TD> <TD>Vijay</TD> <TD>Rohan</TD> </TR> <TR> <TD>Pankaj</TD> <TD>Deepak</TD> </TR> </TABLE> Fourth :Table with rowspan and colspan <TABLE BORDER=1> <TR> <TD ROWSPAN=2>Ajay</TD> <TD COLSPAN=2>Vijay</TD> 58
Advanced HTML
</TR> <TR> <TD>Pankaj</TD> <TD>Rohan</TD> </TR> </TABLE> Fifth: Table with strong tag and a link in cell's data <TABLE BORDER=1> <TR> <TD COLSPAN=3 ALIGN=CENTER><STRONG><AHREF="http://IGNOU.org/">Ajay</STRO NG> </TD> </TR> <TR> <TD>Vijay</TD> <TD>Vikas</TD> <TD>Pankaj</TD> </TR> </TABLE> </BODY> </HTML>
Figure 3.2: Some Important Attributes of the Table Tag Family
The first table in Figure 3.7 illustrates cellspacing and cellpadding.
3.4.3 Colspan and Rowspan Now let us see how to work with COLSPAN (Column Span) and ROWSPAN (Row Span). If we want the cell containing Ajay in Figure 3.7 to be extended to the next cell as well and make that area part of it own, we can use the COLSPAN attribute. This amounts to merging the two cells into one. Those of you who are familiar with spreadsheets such as Microsoft Excel will recognize this as similar to its “merge cells” feature. As you may have guessed, <ROWSPAN> is just like <COLSPAN>. The second table in Figure 3.7 shows COLSPAN, the third table shows ROWSPAN and the fourth table shows an example featuring both COLSPAN and ROWSPAN.
Check Your Progress 3 1.
Design a web page that has 5 equal columns. The table should look the same in all screen resolutions.
59
Scripting Languages
2.
3.5
Make out a brief bio-data of yours and code it as an HTML Page. You can consider using tables to show your academic history.
FRAMES
Now let us understand how to make frames for web documents. The intelligent use of frames can give your pages a cleaner look and make them easier to navigate. The basic concept goes like this: Each frame is a regular, complete HTML document. If you wanted to lay out your page into two frames placed side by side, then you would put one complete HTML document in the left frame and another complete HTML document in the right frame. In addition you need to write a third HTML document. This MASTER PAGE contains the <FRAME> tags that specify what goes where. Dividing a page into frames is actually quite simple. There are only two major frame tags that you need to learn: <FRAMESET> and <FRAME>. The easiest way to explain them is to start making some frames. As an aspiring computer professional, you would be well advised to learn the HTML tags in detail. Do not use HTML editors unless you know HTML, just as you would not let a child use a calculator unless she already knows her arithmetic well. Once you have a thorough grasp of HTML, you can then save labour by using different tools. The tools might not offer the flexibility that you can get through handcoding HTML. So they should be used judiciously. Of course, this advice is not meant for lay persons who want to make web pages. We will now need a few HTML documents. We will give each document a name. Create a new folder somewhere and create the first HTML file as One.htm. Now make another html document. Save this in the same folder as Two.htm. Now do the same for Three, Four, Five, and Six. Save them just like the others. You should now have a folder that contains 6 complete standalone HTML documents.
3.5.1 Frameset Now make a master page in which you write the following code. <HTML> <HEAD> <TITLE>My Frame Page -- The Master Page</TITLE> </HEAD> <FRAMESET> </FRAMESET> </HTML> Now, save it in your folder (with all the other files) as index.htm. If you try to open it with your browser now it will be blank. All you have done so far is make a title. Now let us start defining just how things are going to look. Tell the browser to split the main window into 2 columns, each occupying 50% of the window. <FRAMESET COLS="50%,50%"> </FRAMESET> This will still give a blank output as you have not specified what goes into the windows. We have one more thing to do before our code displays some output.
3.5.2 Frame Tag As you can guess, this tag is used for placing an HTML file in the frame created. We must now tell the browser what to put in each frame.
60
Comme heck out the code for all the FRAM ES related exampl es. Do we need a <BOD Y> tag?
Advanced HTML
<HTML> <HEAD> <TITLE>My Frame Page- The Master Page</TITLE> </HEAD> <FRAMESET COLS="50%,50%"> <FRAME SRC="One.htm"> <FRAME SRC="Two.htm"> </FRAMESET> </HTML> You also need to note here that <FRAMESET> is a container tag, and <FRAME> is not. A container tag has an opening <TAG> and a closing </TAG>. So notice that the <FRAME> tag has no delimiter to terminate it. Everything is in its attributes. The <FRAMESET> tag does all the dividing of the page into different windows. It also has attributes that specify how to divide them up. Can we divide the page into more than 2 pieces? Yes, just make sure that you specify a page to occupy each section or the browser will get confused. Look at the code and the output in Figure 3.10. <HTML> <HEAD> <TITLE>My Frame Page- The Master Page</TITLE> </HEAD> <FRAMESET COLS="20%,20%,20%,20%,20%"> <FRAME SRC="One.htm"> <FRAME SRC="Two.htm"> <FRAME SRC="Three.htm"> <FRAME SRC="Four.htm"> <FRAME SRC="Five.htm"> </FRAMESET> </HTML>
Figure 3.3: A Web Page with Five Frames
It is only a small step to making the frames all of different sizes. Just make sure your arithmetic is correct and that the percentages you specify add up to 100, or the browser will come up with its own interpretation. If we divide the page into ROWS instead of COLS we get a different layout. <HTML> <HEAD> <TITLE>My Frame Page- The Master Page</TITLE> </HEAD> <FRAMESET ROWS="10%,20%,30%,15%,25%"> <FRAME SRC="One.htm"> <FRAME SRC="Two.htm"> <FRAME SRC="Three.htm"> <FRAME SRC="Four.htm"> 61
Scripting Languages
<FRAME SRC="Five.htm"> </FRAMESET> </HTML>
Let us now take another example with only 2 frames. We can specify 50 to indicate that number of pixels instead of 50%. We can also use * instead of a number. The * means whatever is left over. <HTML> <HEAD> <TITLE>My Frame Page- The Master Page</TITLE> </HEAD> <FRAMESET COLS="50,*"> <FRAME SRC="One.htm"> <FRAME SRC="Two.htm"> </FRAMESET> </HTML>
When you use frames you have to be very careful to code properly to ensure that all viewers are able to look at reasonably consistent views. Let us suppose that you make a frame 100 pixels wide on the left and 100 pixels wide on the right. If some users are running an 800 u 600 screen they see the middle area as 600 pixels wide. Other users may have a screen set at 640 u 480. What do they see? The middle area for them is only 440 pixels wide. So if you use any absolute dimensions in your <FRAMESET> tags you should have at least one * that will produce an elastic frame. That way everything will look at least reasonably good. If you do not do that, your page might need to scroll on one resolution and not on another. As far as possible you might want to avoid absolute values in your frames and work on relative numbers so that things get taken care of automatically by the browser. We can have more than one leftover frame and specify a size relationship between them. Try it yourself and see the result. <HTML> <HEAD> <TITLE>My Frame Page- The Master Page</TITLE> </HEAD> <FRAMESET COLS="50,*,2*"> <FRAME SRC="One.htm"> <FRAME SRC="Two.htm"> <FRAME SRC="Three.htm"> </FRAMESET> </HTML> The above code means: Make 3 frames. Make the first 50 pixels wide. Divide the rest between frames 2 and 3. But make frame 3 twice as big as frame 2. Put One.html/ in the first frame, Two.html/ in the second and Three.html/ in the third. It is important to note that everything is done in order. The first <FRAME> is displayed according to the first size attribute in the <FRAMESET> tag (50/One), the second frame with the second (*/Two) and the third frame with the third attribute set (2*/Three).
Frames inside other frames
62
Comme his is not clear. The proble m is more likely with absolut e number s where 50 pixels might be a good size on a 640 X 480 screen but might be miniscu le on a 1600 X 1200 screen.
Advanced HTML
Here we will discuss how to divide frames into different frames i.e. how to put horizontal frames in a vertical one and vice-versa. Here we are going to divide a frame in half horizontally. <HTML> <HEAD> <TITLE>My Frame Page- The Master Page</TITLE> </HEAD> <FRAMESET COLS="50,*,2*"> <FRAME SRC="One.htm"> <FRAME SRC="Two.htm"> <FRAMESET ROWS="50%,50%"> <FRAME SRC="Three.htm"> <FRAME SRC="Four.htm"> </FRAMESET> </FRAMESET>
Here the frame three is at the top and Four at the bottom. This has been done just to illustrate how to achieve the effect and is not meant to suggest that you actually divide up your pages like this. Too many frames on a page do not look good. A good rule of thumb is not to have more than 3 frames on your page. If you can, avoid frames altogether.
3.5.3 Noframes Tag The <NOFRAMES> tag can be used for those browsers that are not able to interpret <FRAME> tags. Although most, if not all, of your visitors will be able to see frames, there is still a small number of such browsers and there still are many users around who do not have the latest in equipment. To address as wide an audience as possible, you could write a no-frames version of your page. <HTML> <HEAD> <TITLE>My Frame Page- The Master Page</TITLE> </HEAD> <FRAMESET COLS="50,*,2*"> <FRAMESET ROWS="50,*,*"> <FRAME SRC="One.htm"> <FRAME SRC="Five.htm"> <FRAME SRC="Six.htm"> </FRAMESET> <FRAME SRC="Two.htm"> <FRAMESET ROWS="50%,50%"> <FRAME SRC="Three.htm"> <FRAME SRC="Four.htm"> </FRAMESET> </FRAMESET> <BODY><NOFRAMES> your browser does not handle frames! </NOFRAMES> </BODY> 63
Scripting Languages
</HTML>
Figure 3.4: Putting in a NOFRAMES Version
Put your non-frames page down between the <NOFRAMES> tags. If someone is using an old browser, it will skip everything above and come straight down here. Frames-capable browsers will ignore what is between the <NOFRAMES> tags. We can also put images in the frames. Let us see how to put in “world.gif” as an example. <FRAME SRC="world.gif" WIDTH=146 HEIGHT=162> The scrollbars that you see can be specified as YES, NO or AUTO. YES means the window gets scrollbars - whether they are needed or not. NO means there will be no scrollbars. AUTO is the default. If scrollbars are needed, they appear while if they are not needed they stay conveniently out of the way. So let us see how to get rid of our scrollbars. <FRAME SRC="world.gif" WIDTH=146 HEIGHT=162 SCROLLING=NO> You would notice a problem with this code. The image is not in the right frame. The next two attributes deal with margins. The browser automatically gives each frame some empty space around its contents. This is normally useful for aesthetic purposes. You can control the size of these margins by using MARGINWIDTH and MARGINHEIGHT. They control the left and right and top and bottom margins respectively. We will set them both to 1. (1 is the minimum) <HTML> <HEAD> <TITLE>My Frame Page- The Master Page</TITLE> </HEAD> <FRAMESET COLS="146,*"> <FRAMESET ROWS="162,*"> <FRAME SRC="world.gif" WIDTH=146 HEIGHT=162 SCROLLING=NO MARGINWIDTH=1 MARGINHEIGHT=1> <FRAME SRC="One.htm"> </FRAMESET> <FRAME SRC="Two.htm"> </FRAMESET>
3.6
64
FORMS
Comme lease check out all the code for FRAM ES by running it exactly as it appears .
Advanced HTML
Now let us get a grip on how to add interactivity to your web documents by way of the <FORM> tag. With this tag you can add to your web pages a guestbook, order forms, surveys, get feedback or put in any other form that you wish.
3.6.1 FORM and INPUT Tag A good way to learn about forms is to use your notepad editor and create a new HTML document. Save it as form1.htm in some folder somewhere. You might want to create a separate folder for learning this tag. Start up your browser. Use it to open form1.html and run Notepad and the browser side by side. This way you can create your pages and almost instantaneously see the results of your work. Remember to hit the refresh button on your browser. Next we must tell the browser where to send the data we gather and how to send it. There are two ways you can do this. 1)
You can send the data to a cgi script or use some other mechanism for processing, or
2)
You can have the data emailed to you. The first option is outside the scope of discussion of this unit. The second, or mailto, form should have the following attributes in the <FORM> tag.
Note: Microsoft's Internet Explorer 3.0 does not support mailto forms. When you try to submit the information, the new mail message window pops up. It does support forms sent to a CGI script. <HTML> <HEAD> <TITLE> Welcome to IGNOU </TITLE> </HEAD> <BODY> <FORM METHOD=POST ACTION="mailto:xxx@xxx.xxx" ENCTYPE="application/x-www-form-urlencoded"> </FORM> </BODY> </HTML> The line containing the mailto keyword in the Figure 3.17 is very important. The only thing you have to do is specify your email address after mailto: The rest must be written exactly as shown. The words FORM, METHOD, POST and ACTION do not have to be capitalized but there must be a space between every two attributes, between FORM and METHOD, between POST and ACTION, and between the email address and ENCTYPE. Some mail programs are capable of converting the data without needing a separate program. You may want to try this method first. Just remove the instruction ENCTYPE="application/x-www-form-urlencoded" and in its place use ENCTYPE="text/plain". The following example shows a general form that includes some of the commonly used controls. <HTML> <HEAD> <TITLE> Welcome to IGNOU </TITLE> </HEAD> <BODY> <FORM METHOD=POST>
65
Scripting Languages
Text box with name, value and size attributes <INPUT TYPE=TEXT NAME="ADDRESS" VALUE="44 XYZ" SIZE=10> <BR>Text box with password and maxlength <INPUT TYPE=PASSWORD MAXLENGTH=10> <BR>Radio button with default checked<BR> Who is your best friend?<BR> <INPUT TYPE=RADIO NAME="BEST FRIEND" VALUE="Ajay" CHECKED> Ajay <BR> <INPUT TYPE=RADIO NAME="BEST FRIEND" VALUE="Rohan"> Rohan <BR> <INPUT TYPE=RADIO NAME="BEST FRIEND" VALUE="Tarun"> Tarun<P> <BR>Checkbox<BR> <INPUT TYPE=CHECKBOX NAME="AJAY" VALUE="YES"> Ajay <BR> <INPUT TYPE=CHECKBOX NAME="Rohan" VALUE="YES"> Rohan <BR> <INPUT TYPE=CHECKBOX NAME="BU" VALUE="YES"> Bunty<P> <BR>Drop down list<BR> <SELECT NAME="BEST FRIEND" SIZE=4> <OPTION VALUE="Ajay">Ajay <OPTION VALUE="Rohan">Rohan <OPTION VALUE="Tarun">Tarun <OPTION VALUE="Gagan">Gagan <OPTION VALUE="Harish">Harish <OPTION VALUE="Manjit">Manjit </SELECT> </FORM> </HTML>
Figure 3.5: A Web Page with a Form
3.6.2 Text Box The <INPUT> tag is used to indicate where user input is expected. It has different attributes, of which the TYPE attribute is used to specify the kind of input that is to be provided. The most common value of this attribute of the <INPUT> tag is TEXT. As shown in Figure 3.18, every INPUT needs a NAME. When the user types in his address (for example 1234 ABC), it will become the input's value and be paired with NAME so the end result after running it through the Mailto Formatter will be ADDRESS=1234 ABC.
66
Advanced HTML
We can, if we want, type in a VALUE. <INPUT TYPE=TEXT NAME="ADDRESS" VALUE="44 XYZ"> This will automatically pair the value 44 XYZ with the name ADDRESS, unless the user changes it. Take care to use quotes as specified in the example. We can specify the size of the text input box. <INPUT TYPE=TEXT NAME="ADDRESS" VALUE="44 XYZ" SIZE=10> The default value is 20. You already know that the default value is the value that the browser assumes if you have not told it otherwise. Go ahead and remove VALUE="44 XYZ". If we want, we can specify how many characters a user can input. Experiment with this and try to input more than 10 characters! The MAXLENGTH attribute is used to restrict the number of characters to be entered in the textbox. <INPUT TYPE=TEXT NAME="ADDRESS" SIZE=20 MAXLENGTH=10> Very similar to the TYPE=TEXT is the TYPE=PASSWORD. It is exactly the same, except that for security it displays *** instead of the actual input. The text entered as password would not be echoed on the page. So you can use this whenever you want to accept a password or some other sensitive information from the user. <INPUT TYPE=PASSWORD> Remember that each <INPUT> must have a NAME, that gives the name of the field. <INPUT TYPE=PASSWORD NAME="USER PASSWORD"> The SIZE, VALUE, and MAXLENGTH attributes work here also just as they do with TEXT
3.6.3 Radio Button Radio buttons are used when only one out of the group of options is to be chosen. In the example code we have put a line break after each button. Each of the Radio Buttons must be assigned a VALUE and you must label each button. The code given in Figure 3.18 illustrates this. You can also modify these labels with other HTML tags if you wish. This takes care of the basics of your radio buttons. You can tidy things up by adding a statement above the buttons, and if you want choose a default selection (optional). To choose a default selection you need to add “CHECKED” with the appropriate radio button. The user of course can only choose one option. The choice will be returned to you as the name/value pair BEST FRIEND=Ajay (or whatever the user picks).
3.6.4 Checkbox Checkboxes are used when one or more out of the group of options is to be chosen. Building Check boxes is very similar to radio buttons. Figure 3.18 illustrates the use of Checkbox. The user can choose any number such as 1, 2, none or all of the options. The choices will be returned to you as the name/value pairs Ajay=YES Tarun=YES (or whatever the user chooses. If nothing, nothing will be returned to you)
67
Scripting Languages
The following is code for making a table containing different options for 3 different questions. Try it yourself and see the result. <CENTER> <TABLE WIDTH=600 BORDER=1 CELLSPACING=1><TR> <TD WIDTH=199> Which of these guys are your friends?<BR> <INPUT TYPE=CHECKBOX NAME="Friend?..Ajay" VALUE="YES"> Ajay <BR> <INPUT TYPE=CHECKBOX NAME="Friend?..Rohan" VALUE="YES"> Rohan <BR> <INPUT TYPE=CHECKBOX NAME="Friend?..Tarun" VALUE="YES"> Tarun<BR> <INPUT TYPE=CHECKBOX NAME="Friend?..BU" VALUE="YES"> Bunty<P> </TD> <TD WIDTH=200> Which of these guys would you lend money to?<BR> <INPUT TYPE=CHECKBOX NAME="Lend money?...Ajay" VALUE="YES"> Ajay <BR> <INPUT TYPE=CHECKBOX NAME="Lend money?...Rohan" VALUE="YES"> Rohan <BR> <INPUT TYPE=CHECKBOX NAME="Lend money?...Tarun" VALUE="YES"> Tarun<BR> <INPUT TYPE=CHECKBOX NAME="Lend money?...BU" VALUE="YES"> Bunty<P> </TD> <TD WIDTH=199> Which of these guys would you trust with your sister?<BR> <INPUT TYPE=CHECKBOX NAME="Date sister?...Ajay" VALUE="YES"> Ajay <BR> <INPUT TYPE=CHECKBOX NAME="Date sister?...Rohan" VALUE="YES"> Rohan <BR> <INPUT TYPE=CHECKBOX NAME="Date sister?...Tarun" VALUE="YES"> Tarun<BR> <INPUT TYPE=CHECKBOX NAME="Date sister?...BU" VALUE="YES"> Bunty<P> </TD> </TR></TABLE> </CENTER>
Figure 3.6: A Form on a Web Page with Checkboxes
3.6.5 SELECT Tag and Pull Down Lists The next type of input is a Pull Down List. With this type you have to use <SELECT> instead of <INPUT> and it also has a closing tag. This control is used 68
Advanced HTML
when we have a long list of items to be displayed. The user can also choose any item. All we have to do to turn it into a Scrolling List is to add a SIZE attribute to the <SELECT> tag. The SIZE is simply how many options show in the window.
3.6.6 Hidden Yet another type of input is HIDDEN input. <INPUT TYPE=HIDDEN NAME="FORMNAME" VALUE="Friend Form 1"> A HIDDEN input is a name/value pair that is returned to you but does not show up anywhere on the web page. The hidden input above is needed for use with the mailto Formatter (MTF). It is how MTF recognizes the forms it has to parse. Suppose you were a company trying to generate leads for a new product. You have a standard form for gathering information that has name, company, phone, products interested in, etc. The only problem is there are 6 slightly different versions of the form in 6 different places. You need to know what is coming from where. What to do? You could add a HIDDEN input to your forms like this: <HTML> <BODY> <FORM METHOD=POST> <INPUT TYPE=HIDDEN NAME="FORMNAME" VALUE="Version 1"> ...for the first version <INPUT TYPE=HIDDEN NAME="FORMNAME" VALUE="Version 2"> ...for the second version <INPUT TYPE=HIDDEN NAME="FORMNAME" VALUE="Version 3"> ...for the third version </FORM> </HTML> By the way, it doesn't matter what the name/value pair in the hidden input is (or any input for that matter). <INPUT TYPE=HIDDEN NAME="E" VALUE="Mc^2"> HIDDEN inputs are also useful for cgi scripts. For example, many Internet Service Providers have a script you can have your forms sent to. It then sends the form back to you properly formatted. The hidden input can be used to tell the cgi script who you are, where to send the parsed data, and so on.
3.6.7 Submit and Reset Submit and Reset are special types of input buttons. Submit is used to send the data to the server and Reset clears/resets the form. <INPUT TYPE=SUBMIT> <INPUT TYPE=RESET> We can easily change what the buttons say. <INPUT TYPE=SUBMIT VALUE="Send it off!"><BR> <INPUT TYPE=RESET VALUE="Clear the form!"><P> If necessary, the SUBMIT button can also have a NAME. You would need this if, for whatever reason, you had more than one SUBMIT button.
69
Scripting Languages
Check Your Progress 4 Create a Web page similar to the following:
3.7
SOME SPECIAL TAGS
We now look at some new tags that have been added to HTML in the latest versions.
3.7.1 COLGROUP <COLGROUP> defines a group of columns in the table and allows you to set the properties of those columns. <COLGROUP> goes immediately after the <TABLE> tag and before any <TR>. <COLGROUP> works very much like <COL>, but you should note that <COLGROUP> requires both an opening and a closing tag. <TABLE BORDER=1 CELLPADDING=4 RULES=GROUPS FRAME=BOX> <COLGROUP></COLGROUP> <COLGROUP SPAN=3></COLGROUP>
3.7.2 THEAD, TBODY, TFOOT <THEAD>, <TBODY>, and <TFOOT> form groups of rows. <THEAD> indicates that a group of rows are the header rows at the top of the table. <TBODY> indicates that a group of rows are body rows. <TFOOT> indicates that a group of rows are the footer rows at the bottom of the table. The most popular use for these three tags, which are currently only recognized by MSIE 4 and up, is to put borders between groups of rows instead of between every two rows. For example, suppose you have a table in which you want borders around the top row, the bottom row, and around the entire block of rows in between. You could do that with the following code. Note that in addition to <THEAD>, <TBODY>, and <TFOOT> you also must use <TABLE RULES=GROUPS>. The following example shows the use of these tags: <HTML> <BODY> <TABLE CELLPADDING=6 RULES=GROUPS FRAME=BOX> <THEAD> <TR> <TH>Weekday</TH> <TH>Date</TH> <TH>Manager</TH> <TH>Qty</TH> </TR> </THEAD> <TBODY> 70
Comme his code fragme nt does not at all explain the tag. Please give a more informa tive exampl e
Advanced HTML
<TR> <TD>Mon</TD> <TD>09/11</TD> <TD>Komal</TD> <TD>639</TD> </TR> <TR> <TD>Tue</TD> <TD>09/12</TD> <TD>Lovely</TD> <TD>596</TD> </TR> <TR> <TD>Wed</TD> <TD>09/13</TD> <TD>Rohan</TD> <TD>1135</TD> </TR> <TR> <TD>Thu</TD> <TD>09/14</TD> <TD>Suresh</TD> <TD>1002</TD> </TR> <TR> <TD>Fri</TD> <TD>09/15</TD> <TD>Rohan</TD> <TD>908</TD> </TR> <TR> <TD>Sat</TD> <TD>09/16</TD> <TD>Lovely</TD> <TD>371</TD> </TR> <TR> <TD>Sun</TD> <TD>09/17</TD> <TD>Suresh</TD> <TD>272</TD> </TR> </TBODY> <TFOOT><TR> <TH ALIGN=LEFT COLSPAN=3>Total</TH> <TH>4923</TH> </TR></TFOOT> </TABLE> </HTML>
Figure 3.7: Using the THEAD, TBODY and TFOOT Tags
3.7.3 _blank, _self, _parent, _top These all are attributes of the <A> tag. The following example explains each of these attributes. <HTML> <BODY> <UL> <LI>TARGET = "_blank"</LI> <A HREF="newwindow.html" TARGET="_blank">a new window</A> <BR> <LI> TARGET = "_self"</LI> go to <A HREF="selftarget.html" TARGET="_self">next</A> page<BR> <LI>TARGET = "_top"</LI> <A HREF="selftarget.html" TARGET="_top">top</A><BR> </UL>
71
Scripting Languages
</HTML>
Figure 3.8: Attributes of the <A> Tag
x TARGET = "_blank" "_blank" opens the new document in a new window. Run the code given in Figure 3.22 and check how it works. This value does not require the use of any frames. "_blank" is popular in web pages which are devoted to links to "other resources on the net". By opening a new window for each resource, the user has a sense of a "main" page (the list of resources) and "secondary" pages (each individual resource). Also, the web site providing the link does not risk being supplanted by a link that it has provided. Note: Some versions of MSIE do not support "_BLANK" x TARGET = "_self" "_self" puts the new document in the same window and frame as the current document. "_self" works the same as if you had not used TARGET at all. For an example see Figure 3.22. x TARGET = "_parent" "_parent" is used in a situation where a frameset file is nested inside another frameset file. A link in one of the inner frameset documents which uses "_parent" will load the new document where the inner frameset file had been. If the current document's frameset file does not have any "parent", then "_parent" works exactly like "_top": the new document is loaded in the full window. Note that "_parent" does not work in a frameset, which is merely nested inside another frameset in the same frameset file. x TARGET = "_top" "_top" loads the linked document in the topmost frame, that is, the new page fills the entire window. Refer to Figure 3.22.
3.7.4 IFRAME <IFRAME> is an HTML 4.0 addition to the frames toolbox. Currently only MSIE supports <IFRAME>. Unlike frames created using <FRAMESET> and <FRAME>, <IFRAME> creates a frame that sits in the middle of a regular non-framed web page. <IFRAME> works like <IMG>, only instead of putting a picture on the page, it puts another web page. For example, suppose within the same directory as this page there is a file called "hello.html". This code puts hello.html into an inline frame:
72
Advanced HTML
<IFRAME SRC="hello.html" WIDTH=450 HEIGHT=100> If you can see this, your browser does not understand IFRAME. However, we'll still link <A HREF="hello.html">link</A> you to the file. </IFRAME> which gives us this inline frame: Here’s what the code means: IFRAME The name of the <IFRAME> tag SRC="hello.html" The URL of the document to show in the inline frame. WIDTH=450 HEIGHT=100 The dimensions of the inline frame. If you can see this, your browser doesn't understand IFRAME. However, we'll still <A HREF="hello.html">link</A> you to the file. Code between <IFRAME> and </IFRAME> is not displayed by browsers that understand <IFRAME>. Browsers that do not understand <IFRAME> will display this code (because they don't know how to ignore it). You can do most of the things with <IFRAME> that you can do with regular frames, including setting the frame border, internal margins, and setting information on scroll bars. You can use the attribute so that you can set links to the target frame.
3.7.5 <LABEL> <LABEL>, an HTML 4.0 element supported by MSIE and Netscape 6, defines a set of text that is associated with a particular form element. For example, the code below indicates that the phrase "send more information" is associated with the “moreinfo” checkbox because the checkbox is within the <LABEL> element: <HTML> <BODY> <LABEL FOR="moreinfo"> send more information <INPUT NAME="moreinfo" TYPE=CHECKBOX ID="moreinfo"> </LABEL> </HTML>
The FOR attribute is required in the above example. The value of FOR should be the same as the value of ID in the form field that the label applies to. You can also associate a <LABEL> with a field that is not within its contents using the FOR attribute.
3.7.6 Attribute for <SELECT> TABINDEX = integer TABINDEX is supported by MSIE 4.x and higher and Netscape 6. Normally, when the user tabs from field to field in a form (in a browser that allows tabbing, not all browsers do) the tab order is the order in which the fields appear in the HTML code.
73
Scripting Languages
However, sometimes you want the tab order to flow a little differently. In that case, you can number the fields using TABINDEX. The tabs then flow in order from the one with the lowest TABINDEX to the highest. The code below illustrates this: <HTML> <BODY> <TABLE BORDER CELLPADDING=3 CELLSPACING=5 BGCOLOR="#FFFFCC"> <TR> <TD>name: <INPUT NAME="realname" TABINDEX=1></TD> <TD ROWSPAN=3>comments<BR> <TEXTAREA COLS=25 ROWS=5 TABINDEX=4></TEXTAREA></TD></TR> <TR> <TD>email: <INPUT NAME="email" TABINDEX=2></TD></TR> <TR> <TD>department: <SELECT NAME="dep" TABINDEX=3> <OPTION VALUE="">... <OPTION VALUE="mkt">Marketing <OPTION VALUE="fin">Finance <OPTION VALUE="dev">Development <OPTION VALUE="prd">Production</SELECT></TD></TR> </TABLE> </HTML>
TABINDEX can also be used with <A>, <INPUT>, <TEXTAREA>, and <BUTTON>.
3.7.7 TEXTAREA <TEXTAREA> indicates a form field where the user can enter large amounts of text. In most respects, <TEXTAREA> works like an <INPUT> field. It can have a name and a default value. It has to be noticed that <TEXTAREA> is a container tag, so it has a start tag and an ending tag. In its simplest form, <TEXTAREA> requires the NAME, COLS and ROWS attributes, and nothing between <TEXTAREA ...> and </TEXTAREA>. Look at the code fragment shown below <FORM ACTION="../cgi-bin/mycgi.pl" METHOD=POST> your comments:<BR> <TEXTAREA NAME="comments" COLS=40 ROWS=6></TEXTAREA> <P><INPUT TYPE=SUBMIT VALUE="submit"> </FORM> gives us this form:
74
Comme he browser output has been given for all the three code fragme nts. It would be better to make it clear that they are fragme nts and are not complet e code that will run directly .
Advanced HTML
your comments: The matter between <TEXTAREA ...> and </TEXTAREA> are used as the default value
Comment: Maybe you would like this sentence to be inside a <PRE> tag.
<FORM ACTION="../cgi-bin/mycgi.pl"> your response:<BR> <TEXTAREA NAME="comments" COLS=40 ROWS=6> Kamal said : I think it's a great idea : but it needs more thought </TEXTAREA> <P><INPUT TYPE=SUBMIT VALUE="submit"> </FORM> gives us your response:
Figure 3.10: Using the TEXTAREA Tag
The contents are interpreted as text only; HTML markup is ignored. Theoretically the user can type unlimited amounts of text into the textarea field. In practice the browser sets a limit that is usually no more than 32 K. If you want users to send in their latest novel, consider using some file upload mechanism. Case Study: Suppose your boss has asked you to create a Web page from which customers can order computer equipment. You need to collect the customer’s name, address, phone number, age, credit card information, and what the customer wants to order. <HTML> <HEAD> <TITLE>ComputoRama Order Form</TITLE> </HEAD> <BODY> <FORM ACTION="mailto:mail@abc.com" METHOD=POST> <TABLE BORDER="2" CELLPADDING="1"> <TR> <TD ROWSPAN="2">Who Are You?</TD> <TD><INPUT TYPE="text" NAME="FirstName" SIZE=2Ø></TD> <TD><INPUT TYPE="text" NAME="MiddleInitial" SIZE=1></TD> <TD><INPUT TYPE="text" NAME="LastName" SIZE=2Ø></TD> <TD><INPUT TYPE="text" NAME="Age" SIZE=3></TD> </TR> <TR> <TD><FONT SIZE="-2">First Name</FONT></TD> <TD><FONT SIZE="-2">MI</FONT></TD> <TD><FONT SIZE="-2">Last Name></TD> 75
Scripting Languages
<TD><FONT SIZE="-2">Age</TD> </TR> <TR> <TD ROWSPAN="3">How Do We Contact You?</TD> <TD COLSPAN="4" VALIGN="TOP">Street Address: <TEXTAREA name="StreetAddress" rows=2 cols=3Ø></TEXTAREA></TD> </TR> <TR> <TD COLSPAN="2">City: <INPUT TYPE="text" NAME="City" SIZE=20></TD> <TD COLSPAN="2">State: <INPUT TYPE="text" NAME= "State" SIZE=2></TD> </TR> <TR> <TD COLSPAN="2">ZIP Code: <INPUT TYPE="text" NAME="ZIPCode" SIZE=10></TD> <TD COLSPAN="2">Daytime Phone (<INPUT TYPE="text" NAME="Phone1" SIZE=3>) <INPUT TYPE="text" NAME="Phone2" SIZE=3><INPUT TYPE="text" NAME="Phone3" SIZE=4></TD> </TR> <TR> <TD>Credit Card <INPUT TYPE="radio" NAME="CreditCardType" VALUE="Visa" CHECKED>Visa <INPUT TYPE="radio" NAME="CreditCardType" VALUE="MasterCard">M/C</TD> <TD COLSPAN="2" ALIGN="CENTER"> <INPUT TYPE="text" NAME="CreditCardNumber1" SIZE=4> <INPUT TYPE="text" NAME="CreditCardNumber2" SIZE=4> <INPUT TYPE="text" NAME="CreditCardNumber3" SIZE=4> <INPUT TYPE="text" NAME="CreditCardNumber4" SIZE=4></TD> <TD COLSPAN="2">Expiration Date: <INPUT TYPE="text" NAME="ExpirationMonth" SIZE=2>/ <INPUT TYPE="text" NAME="ExpirationYear" SIZE=2></TD> </TR> <TR> <TD>Merchandise</TD> <TD COLSPAN=4><SELECT MULTIPLE NAME="Merchandise" SIZE=1> <OPTION SELECTED> HAL-47Ø <OPTION> Banana9ØØØ <OPTION> High Res Monitor <OPTION> Low Res Monitor <OPTION> Deluxe Keyboard <OPTION> Regular Keyboard <OPTION> Laser Printer <OPTION> Inkjet Printer <OPTION> Dot Matrix Printer <OPTION> Mouse <OPTION> Trackball <OPTION> Scanner </SELECT></TD> </TR> <TR> <TD ALIGN=CENTER COLSPAN="5"> <H1>Thank You For Your Order!</H1> </TD> </TR> </TABLE> <CENTER> <INPUT TYPE="submit" VALUE="Ship It!"> <INPUT TYPE="reset" VALUE="Clear Entries"> 76
Advanced HTML
</CENTER> </FORM> </BODY> </HTML>
Check Your Progress 4 Suppose you are asked to design a registration form for members of a web site. Registration information will include hobbies, interests, assets owned by the member etc. Create the following Web page.(Case study)
3.8
SUMMARY
In this unit we have learned some important and advanced topics of HTML. You should now be able to develop interactive Web pages also. We have discussed ways of linking to different locations in a Web site. We have learned about lists that allow us to develop Web pages with elementary data. Lists can be of three types i.e. Ordered Lists, Unordered Lists and Definition Lists. We all know how important a table is in any document -- from someoneâ&#x20AC;&#x2122;s bio data to a Chief Executiveâ&#x20AC;&#x2122;s report a table is the simplest way to understand the information. If we display the data in paragraph form then it would look unorganized and would be difficult to comprehend. On the other hand, a table presents all the data at a glance. We have also seen how frames are used to divide a page into multiple sections. For example if we want to create a Web page that contains information on three different topics, then we could use frames. One of the most important points in Web pages is the interaction with the end user. For creating interactive Web pages we use Forms. In a form we can have different controls like Text box, Radio buttons, check box, drop down lists etc. All these controls allow us to interact with the user accept inputs from the user. In the final section we have learned about some of the recently introduced tags that are available in the latest version of HTML.
3.9
SOLUTIONS/ ANSWERS
Check Your Progress 1 77
Scripting Languages
1.
Following is the code to design a Web page that provides links to five different Web sites.
<HTML> <TITLE> Link to five different Web sites </title> <BODY> Web site 1 <A HREF="http://www.hotmail.com/">Hotmail</A> Web site 2 <A HREF="http://www.google.com/">google</A> Web site 3 <A HREF="http://www.astalavista.com/">altavista</A> Web site 4 <A HREF="http://www.education.com/">education</A> Web site 5 <A HREF="http://www.computer.com/">computer</A> </BODY> </HTML> 2.
Following is the code for the given page
<HTML> <HEAD> </HEAD> <BODY> <B><FONT SIZE=5><P>GENERAL TABLE OF CONTENTS</P> </FONT><P>So, you want to make a Web page</P></B> LESSONS: <P><A HREF="../../makapage/introduction.htm">Introduction</A></P> <P><A HREF="../../makapage/lesson01.html">Lesson 1</A>: getting started, saving as html <BR> <A HREF="../../makapage/lesson02.html">Lesson 2</A>: backgrounds, bold, italic, font &amp; fontsize <BR> <A HREF="../../makapage/lesson03.html">Lesson 3</A>: basic formatting, line breaks, inserting images <BR> <A HREF="../../makapage/lesson04.html">Lesson 4</A>: links, images, thumbnails, anchors <BR> <A HREF="../../makapage/lesson05.html">Lesson 5</A>: lists, more formatting, horizontal rules, comments <BR> <A HREF="../../makapage/lesson06.html">Lesson 6</A>: more resources <BR> <A HREF="../../makapage/picker/index.html">Color Picker</A> <BR> <A HREF="../../makapage/dafonts/master.html">Handy Dandy Font Viewer</A> <A HREF="../../makapage/dafonts/index.html">(intro)</A> <BR> <A HREF="../../makapage/special.html">Special Characters</A> <BR> <A HREF="../../makapage/upload.html">Upload your page to the Web</A> </P> <P>&nbsp;</P> <FONT SIZE=2><P> </P></FONT></BODY> </HTML>
Check Your Progress 2 Code of the given page <HTML> <HEAD> </HEAD> <BODY> <P> Following are the key to success: </P> <UL> <LI><img src = “arrow.gif”> Devotion </LI> <LI><img src = “arrow .gif”> Hardwork </LI> <LI><img src =”arrow.gif”> Smart work </LI> </UL> <P> Following are the key to success: </P> <OL> 78
Comme he output of this code is not very pleasin g – all the options are on the same physica l line. Could be improv ed
Advanced HTML
<LI> Devotion </LI> <LI> Hardwork </LI> <LI> Smartwork </LI> </OL> </BODY> </HTML>
Check Your Progress 3 1.
Following is the code for a Web page that has 5 equal columns.
<HTML> <HEAD> </HEAD> <BODY> <TABLE BORDER CELLSPACING=3 BORDERCOLOR="#000000"> <TR><TD WIDTH="20%"> <P>Column 1</TD> <TD WIDTH="20%"> <P>Column 1</TD> <TD WIDTH="20%"> <P>Column 1</TD> <TD WIDTH="20%"> <P>Column 1</TD> <TD WIDTH="20%"> <P>Column 1</TD> </TR> </TABLE> <P> </P></BODY> </HTML> 2.
Design your Bio-Data in HTML Page.
<HTML> <HEAD> </HEAD> <BODY>
Comment: Better use tables to show the academic history.
<B><U><P>Qualifications</P></B></U> <P ALIGN="JUSTIFY"><B>X &amp; XII</B> from CBSE Board.</P> <P ALIGN="JUSTIFY"><B>BCOM (PASS)</B> from Delhi University in 1999.</P> <P ALIGN="JUSTIFY"><B>O Level</B> from DOEACC Society India in 2000.</P> <P ALIGN="JUSTIFY"><B>MCP </B>(Microsoft Certified Professional) in 2001 in Analyzing Requirements and Defining Solutions Architecture with <U>93.9%</U>.</P> <P ALIGN="JUSTIFY"><B>CIC</B> (Certificate In Computing) from Indira Gandhi National Open University with <U>Ist Division</U>. </P> <P ALIGN="JUSTIFY"><B>PGDCA</B> (Post Graduate Diploma in Computer Applications) from IGNOU with <U>Ist Division</U>.</P> <P ALIGN="JUSTIFY"><B>ADCA </B>(Advance Diploma in Computer Applications) from IGNOU with <U>Ist Division</U>.</P> <P ALIGN="JUSTIFY"><B>MCA </B>from Indira Gandhi National Open University with <U>Ist Division</U>. </P> <B><U><P>Languages Known</P> <P ALIGN="JUSTIFY"></B></U>C including data structures, C++ including data structure, MS COBOL 4.5, MS FORTRAN 77, Assembly using MASM, Unix Shell Programming,<FONT SIZE=5> </FONT>HTML, Corman Common LISP, Visual Basic 6.0.</P> <B><U><P>Personal Details</P> 79
Scripting Languages
</B></U><P>Name ABC</P> <P>Fatherâ&#x20AC;&#x2122;s Name<B>&#9;</B>XYZ&#9;</P> <P>Date of Birth<B>&#9;</B>23<SUP>rd</SUP> Jan,1979.&#9;</P> <P>Address<B>&#9;</B>A-2, East Of Kailash, New Delhi.&#9;</P> <P>Tel.<B>&#9;</B>29090909</P> <P>Email<B>&#9;</B>ram@hotmail.com</P> <P>Sex<B>&#9;</B>Male&#9;</P> <P>Marital Status<B>&#9;</B>Single</P> <B><U><P>Interests and activities</P> </B></U><P>Troubleshooting hardware and software problems.&#9;</P> <B><U><P>Additional Assets</P> </B></U><P>Hard work, devotion and curiosity to learn and adapt to new environments.&#9;</P> <FONT SIZE=2><P>&nbsp;</P> </FONT><B><P>Date:</B><FONT SIZE=2> <B> (RAM)</P> <P>Place:</P></B></FONT></BODY> </HTML>
Check Your Progress 4 <head> <title>IGNOU SSO</title> <META HTTP-EQUIV="expires" CONTENT="Sat, 15 Mar 2003 23:59:59 GMT"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Style-Type" content="text/css"> </head> <body> <form name= "theForm" action= "/suggest/emailRegistrationServlet" method=POST onsubmit="return validate()"> <input type="Hidden" name="successURL" value="http://email.IGNOU.com/success.html"> <input type="Hidden" name="pageTitle" value="IGNOU Email"> <input type="Hidden" name="sourceChannel" value="Email"> <table border=0 cellpadding=0 width="100%"> <tbody> <tr bgcolor=#8fbc8f> <td colspan=3 align=center><b class="tdw">&nbsp;IGNOU Email</b></td> </tr> <tr bgcolor=#0066cc> <td colspan=3><b>&nbsp;<font color="#FFFFFF"><span >ACCOUNT INFORMATION</span></font></b></td> </tr> <tr> <td valign=center width="31%" class="td"> IGNOU ID: </td> <td valign=center width="43%"> <input name=username> <span >*</span> </td> <td bgcolor=#f0f0f0 width="26%" class="td1">Use only letters, numbers, dot(.), minus(-) or the underscore (_) .No spaces or special characters please.<br> <span >If you choose your IGNOU ID as xyz, your e-mail will be xyz@IGNOU.com.</span> </td> </tr> <tr> <td height=42 width="31%" class="td">Password:</td> <td height=42 width="43%"> <input name=password type=password> <span>*</span></td> <td bgcolor=#f0f0f0 rowspan=2 width="26%" class="td1">Must be at least three (3) characters long, may contain numbers (0-9) , upper and lowercase letters (A-Z, a-z) and underscore(_) but no spaces or special characters. Make sure it is difficult for others to guess! </td> 80
Advanced HTML
</tr> <tr> <td width="31%" class="td">Re-Enter Password:</td> <td width="43%"> <input name=confirmPassword type=password> <span >*</span></td> </tr> <tr> <td width="31%" class="td">Security Queston:</td> <td width="43%"> <input name=secretQus> <span >* </span></td> <td bgcolor=#f0f0f0 rowspan=2 width="26%" class="td1">Just in case you forget your password, we'll verify your identity by asking you this question. Choose a question only you know the answer to and that has nothing to do with your password whatsoever.</td> </tr> <tr> <td height=2 width="31%" class="td">Your Answer:</td> <td height=2 width="43%"> <input name=secretAns> <span >*</span> </td> </tr> <tr> <td width="31%" class="td">Alternative Email</td> <td width="43%"> <input maxlength=100 name=altEmail size=35> &nbsp;&nbsp;<span >(optional) </span></td> <td bgcolor=#f0f0f0 width="26%" class="td1"> This will help you to retrieve your IGNOU ID <br> and password in case you forget it. </td> </tr> <tr bgcolor=#0066cc> <td colspan=3><b class="tdw">&nbsp;<font color="#FFFFFF"><span class="tdb">PERSONAL INFORMATION</span></font></b></td> </tr> <tr> <td width="31%" class="td">First Name:</td> <td width="43%"> <input name=firstName document.theform.firstname.focus();> <input type=hidden name=frmURL> <input type=hidden name="education" value="u"> <span >* </span></td> <td width="26%">&nbsp;</td> </tr> <tr> <td width="31%" class="td">Middle Name:</td> <td width="43%"> <input name=MiddleName> </td> <td width="26%">&nbsp;</td> </tr> <tr> <td width="31%" class="td">Last Name:</td> <td width="43%"> <input name=lastName> <span >*</span> </td> <td width="26%">&nbsp;</td> </tr> <tr> <td width="31%" class="td">Date of Birth</td> <td width="43%"> <font face="MS Sans Serif" size=2> <select name="date"> <option selected><font face="Arial, Helvetica, sansserif">date</font></option> <option value="01"><font face="Arial, Helvetica, sansserif">01</font></option> 81
Scripting Languages
<option value="02"><font face="Arial, Helvetica, sansserif">02</font></option> <option value="03"><font face="Arial, Helvetica, sans serif">03</font></option> <option value="04"><font face="Arial, Helvetica, sansserif">04</font></option> <option value="05"><font face="Arial, Helvetica, sansserif">05</font></option> <option value="06"><font face="Arial, Helvetica, sansserif">06</font></option> <option value="07"><font face="Arial, Helvetica, sansserif">07</font></option> <option value="08"><font face="Arial, Helvetica, sansserif">08</font></option> <option value="09"><font face="Arial, Helvetica, sansserif">09</font></option> <option value="10"><font face="Arial, Helvetica, sansserif">10</font></option> <option value="11"><font face="Arial, Helvetica, sansserif">11</font></option> <option value="12"><font face="Arial, Helvetica, sansserif">12</font></option> <option value="13"><font face="Arial, Helvetica, sansserif">13</font></option> <option value="14"><font face="Arial, Helvetica, sansserif">14</font></option> <option value="15"><font face="Arial, Helvetica, sansserif">15</font></option> <option value="16"><font face="Arial, Helvetica, sansserif">16</font></option> <option value="17"><font face="Arial, Helvetica, sansserif">17</font></option> <option value="18"><font face="Arial, Helvetica, sansserif">18</font></option> <option value="19"><font face="Arial, Helvetica, sansserif">19</font></option> <option value="20"><font face="Arial, Helvetica, sansserif">20</font></option> <option value="21"><font face="Arial, Helvetica, sansserif">21</font></option> <option value="22"><font face="Arial, Helvetica, sansserif">22</font></option> <option value="23"><font face="Arial, Helvetica, sansserif">23</font></option> <option value="24"><font face="Arial, Helvetica, sansserif">24</font></option> <option value="25"><font face="Arial, Helvetica, sansserif">25</font></option> <option value="26"><font face="Arial, Helvetica, sansserif">26</font></option> <option value="27"><font face="Arial, Helvetica, sansserif">27</font></option> <option value="28"><font face="Arial, Helvetica, sansserif">28</font></option> <option value="29"><font face="Arial, Helvetica, sansserif">29</font></option> <option value="30"><font face="Arial, Helvetica, sansserif">30</font></option> <option value="31"><font face="Arial, Helvetica, sansserif">31</font></option> 82
Advanced HTML
</select> <select name="month"> <option selected><font face="Arial, Helvetica, sansserif">month</font></option> <option value="01"><font face="Arial, Helvetica, sansserif">01</font></option> <option value="02"><font face="Arial, Helvetica, sansserif">02</font></option> <option value="03"><font face="Arial, Helvetica, sansserif">03</font></option> <option value="04"><font face="Arial, Helvetica, sansserif">04</font></option> <option value="05"><font face="Arial, Helvetica, sansserif">05</font></option> <option value="06"><font face="Arial, Helvetica, sansserif">06</font></option> <option value="07"><font face="Arial, Helvetica, sansserif">07</font></option> <option value="08"><font face="Arial, Helvetica, sansserif">08</font></option> <option value="09"><font face="Arial, Helvetica, sansserif">09</font></option> <option value="10"><font face="Arial, Helvetica, sansserif">10</font></option> <option value="11"><font face="Arial, Helvetica, sansserif">11</font></option> <option value="12"><font face="Arial, Helvetica, sansserif">12</font></option> </select> <select size=1 name=year> <option selected>year</option> <option value="1970">1970</option> <option value="1971">1971</option> <option value="1972">1972</option> <option value="1973">1973</option> <option value="1974">1974</option> <option value="1975">1975</option> <option value="1976">1976</option> <option value="1977">1977</option> <option value="1978">1978</option> <option value="1979">1979</option> <option value="1980">1980</option> <option value="1981">1981</option> <option value="1982">1982</option> <option value="1983">1983</option> <option value="1984">1984</option> <option value="1985">1985</option> <option value="1986">1986</option> <option value="1987">1987</option> <option value="1988">1988</option> <option value="1989">1989</option> <option value="1990">1990</option> <option value="1991">1991</option> <option value="1992">1992</option> <option value="1993">1993</option> <option value="1994">1994</option> <option value="1995">1995</option> <option value="1996">1996</option> <option value="1997">1997</option> 83
Scripting Languages
<option value="1998">1998</option> <option value="1999">1999</option> <option value="2000">2000</option> <option value="2001">2001</option> <option value="2002">2002</option> </select> </font><span > *</span> </td> <td rowspan=5 align="center"> <font face=arial size=2 color=red><b>Accounts not accessed for a <br> consecutive period of 120 days or<br> more may be deactivated without<br> any prior intimation. All data in such<br> mailboxes will be lost. IGNOU will<br> have no liability for the same.</b> </font> </td> </tr> <tr> <td height=25 width="31%" class="td">Marital Status </td> <td height=25 width="43%"> <select name=maritalStatus size=1 id="select"> <option selected value="">[Select one]</option> <option value="S">Single</option> <option value="M">Married</option> </select> <span >*</span> </td> </tr> <tr> <td width="31%" class="td">Gender</td> <td width="43%"> <font face="Arial, Helvetica, sans-serif" size=2> <select size=1 name=gender> <option value="" selected>[Select one]</option> <option value=M>Male</option> <option value=F>Female</option> </select> </font> <span >*</span> </td> </tr> <tr> <td height=35 width="31%" class="td">Pincode </td> <td height=35 width="43%"> <span class=td1r> <input name=pin size=10 maxlength=15 onKeyPress="if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;"> </span> <span >*</span> </td> </tr> <tr> <td height=24 width="31%" class="td">Country:</td> <td height=24 width="43%"> <select name="country" size=3> <option value="in">Select One <option value="us">United States of America <option value="bs">Bahamas <option value="bh">Bahrain <option value="bd">Bangladesh <option value="bb">Barbados <option value="by">Belarus <option value="be">Belgium <option value="bz">Belize <option value="bj">Benin <option value="bm">Bermuda <option value="bt">Bhutan <option value="cv">Cape Verde <option value="zm">Zambia 84
Advanced HTML
<option value="zw">Zimbabwe </select> <span >* </span></td> </tr> <tr> <td height=27 width="31%" class="td"> Education </td> <td height=27 width="43%"> <select name=education id="select2"> <option selected value="">[Select One]</option> <option value=Grad_Post_Prof>Graduate/Post GraduateProfessional</option> <option value=Grad_Post_Gen>Graduate/Post Graduate-General</option> <option value=SomeColl>SomeCollege but not Graduate</option> <option value=SSC_HSC>SSC/HSC</option> <option value=5to9>School 5-9 Years</option> <option value=lessthan4>School upto 4 years</option> </select> <span >* </span></td> <td height=27 width="26%">&nbsp;</td> </tr> <tr> <td height=2 width="31%" class="td">Annual Income </td> <td height=2 width="43%"> <select name=incomeGroup size=1 id="select3" style="HEIGHT: 22px; WIDTH: 190px"> <option selected value="">[Select one]</option> <option value=0to1>Rs 1 Lakh &amp; below</option> <option value=1to3>Rs 1 Lakh -2.99 Lakhs</option> <option value=3to5>Rs 3 - 4.99 Lakhs</option> <option value=5to10>Rs 5 - 9.99 Lakhs</option> <option value=mysterious>a mysterious sum of money</option> <option value=morethan10>above Rs 10 Lakhs</option> </select> <span > * </span></td> <td height=2 width="26%">&nbsp;</td> </tr> <TR> <TD width="31%"><FONT face="Arial, Helvetica, sans-serif" size=2>City:</FONT></TD> <TD colSpan=2> <FONT face="Arial, Helvetica, sans-serif" size=2> <SELECT name=city> <option value="" selected>[Select One] </option> <option value="Ahmedabad">Ahmedabad </option> <option value="Bangalore">Bangalore </option> <option value="Patna">Patna </option> <option value="Noida">NOIDA </option> <option value="Pune">Pune </option> <option value="Surat">Surat </option> <option value="Varanasi">Varanasi </option> <option value="Vishakapatnam">Vishakapatnam</option> </SELECT> </FONT> <FONT color=#ff0000 face=Arial size=1>*</FONT> </TD> </TR> <TR> <TD height=35><FONT face="Arial, Helvetica, sans-serif" size=2>State:</FONT></TD> <TD height=35> <INPUT maxLength=100 name=state size=35> <FONT color=#ff0000 face=Arial size=1>*</FONT> </TD> <td height=2>&nbsp;</td> </TR> <TR> <TD height=25><FONT face="Arial, Helvetica, sans-serif" size=2>Occupation</FONT></TD> 85
Scripting Languages
<TD height=25> <SELECT name=occupation size=1 style="HEIGHT: 22px; WIDTH: 190px"> <option value="" selected>[Select one]</option> <option value="Artist">Artist</option> <option value="Social worker">Social worker</option> <option value="Student">Student</option> <option value="Teacher/Administrator">Teacher / Administrator</option> <option value="Unemployed/Between_jobs">Unemployed / Between jobs</option> <option value="No_Work">What ? me work</option> <option value="Others">others</option> </SELECT> <font color=#ff0000 face=Arial size=1>*</font> </TD> <TD height=25>&nbsp; </TD> </TR> <TR> <TD height=29><FONT face="Arial, Helvetica, sans-serif" size=2>Industry</FONT></TD> <TD height=29> <SELECT name=industry> <OPTION selected value="">[Select one]</OPTION> <OPTION value=Sales>Sales</OPTION> <OPTION value=Marketing>Marketing</OPTION> <OPTION value=Production>Production</OPTION> <OPTION value="Self_Employed">Self Employed</OPTION> <OPTION value=Student>Student</OPTION> <OPTION value=Others>Others</OPTION> </SELECT> <font color=#ff0000 face=Arial size=1>*</font> </TD> <TD height=29>&nbsp;</TD> </TR> </table> </form> </body> </html>
86
Scripting Languages
UNIT 4
INTRODUCTION TO JAVASCRIPT
Structure 4.0 4.1 4.2
Introduction Objectives JavaScript Variables and Data Types 4.2.1 4.2.2
4.3 4.4
4.6 107
Dialog Boxes Alert Boxes Confirm Boxes Prompt Boxes
Javascript with HTML 4.7.1 4.7.2
4.8
97
Functions Executing Deferred Scripts Objects
Messagebox in Javascript 4.6.1 4.6.2 4.6.3 4.6.4
4.7
94
Conditional Statements Loop Statements
Object-Based Programming 4.5.1 4.5.2 4.5.3
90 90 91
Declaring Variables Data Types
Statements and Operators 92 Control Structures 4.4.1 4.4.2
4.5
Page No.
109
Events Event Handlers
Forms
112
Forms Array
4.9 Summary 4.10 Solutions/ Answers 4.11 Further Readings
4.0
119 120 129
INTRODUCTION
JavaScript is the programming language of the Web. It is used mainly for validating forms. JavaScript and Java can be related to each other. There exist many other differences between the two. The client interprets JavaScript, whereas in Java, one can execute a Java file only after compiling it. JavaScript is based on an object model. In this unit you will learn how to write JavaScript code and insert them into your HTML documents, and how to make your pages more dynamic and interactive. Besides basic programming constructs and concepts, you will also learn about Objectbased programming in JavaScript. We will also discuss some commonly used objects, message boxes and forms. One of the most important parts of JavaScript is Event handling that will allow you to write Event-driven code.
4.1
OBJECTIVES
After going through this unit you would be able to learn and use the following features of the JavaScript: x x x x x 90
Operators; Loop constructs; Functions; Objects such as Math object, Date object; Input and output boxes;
x x x
4.2
Event handlers; Form object; and Form array.
Introduction to JavaScript
JAVASCRIPT VARIABLES AND DATATYPES
Let us first see the skeleton of a JavaScript file. <HTML> <HEAD> <TITLE>IGNOU </TITLE> <SCRIPT LANGUAGE = JavaScript > </SCRIPT> </HEAD> <BODY> </BODY> </HTML> JavaScript code should be written between the <SCRIPT> and </SCRIPT> tags. The value LANGUAGE = JavaScript indicates to the browser that Javascript code has been used in the HTML document. It is a good programming practice to include the Javascript code within the <HEAD> and </HEAD> tags. Now let us start with variables. Variables store and retrieve data, also known as "values". A variable can refer to a value, which changes or is changed. Variables are referred to by name, although the name you give them must conform to certain rules. A JavaScript identifier, or name, must start with a letter or underscore ("_"); subsequent characters can also be digits (0-9). Because JavaScript is case sensitive, letters include the characters "A" through "Z" (uppercase) and the characters "a" through "z" (lowercase). Typically, variable names are chosen to be meaningful and related to the value they hold. For example, a good variable name for containing the total price of goods orders would be total_price.
4.2.1 Declaring Variables You can declare a variable with the var statement: var strname = some value You can also declare a variable by simply assigning a value to the variable. But if you do not assign a value and simply use the variable then it leads to an error. Strname = some value You assign a value to a variable like this: var strname = "Hello" Or like this: strname = "Hello" The variable name is on the left hand side of the expression and the value you want to assign to the variable is on to the right side. Thus the variable "strname" shown above gets the value "Hello" assigned to it. Life span of variables When you declare a variable within a function, the variable can be accessed only within that function. When you exit the function, the variable is destroyed. These
91
Scripting Languages
variables are called local variables. You can have local variables with the same name in different functions, because each is recognized only by the function in which it is declared. If you declare a variable outside a function, all the functions on your page can access it. The lifetime of these variables starts when they are declared, and ends when the page is closed.
4.2.2 Data Types A value, the data assigned to a variable, may consist of any sort of data. However, JavaScript considers data to fall into several possible types. Depending on the type of data, certain operations may or may not be allowed on the values. For example, you cannot arithmetically multiply two string values. Variables can be of these types: Data Types
Description 3 or 7.987 are the examples of Integer and floating-point numbers.
Number
Integers can be positive, 0, or negative; Integers can be expressed in decimal (base 10), hexadecimal (base 16), and octal (base 8). A decimal integer literal consists of a sequence of digits without a leading 0 (zero). A leading 0 (zero) on an integer literal indicates it is in octal; a leading 0x (or 0X) indicates hexadecimal. Hexadecimal integers can include digits (0-9) and the letters a-f and A-F. Octal integers can include only the digits 0-7.
A floating-point number can contain either a decimal fraction, an "e" (uppercase or lowercase), that is used to represent "ten to the power of" in scientific notation, or both. The exponent part is an "e" or "E" followed by an integer, which can be signed (preceded by "+" or "-"). A floating-point literal must have at least one digit and either a decimal point or "e" (or "E"). Boolean True or False. The possible Boolean values are true and false. These are special values, and are not usable as 1 and 0. In a comparison, any expression that evaluates to 0 is taken to be false, and any statement that evaluates to a number other than 0 is taken to be true. "Hello World!Â&#x201D; Strings are delineated by single or double quotation marks. String (Use single quotes to type strings that contain quotation marks.) MyObj = new Object(); Object Not the same as zero Â&#x2013; no value at all. A null value is one that has no value and Null means nothing. Undefined A value that is undefined is a value held by a variable after it has been created, but before a value has been assigned to it.
4.3
92
STATEMENTS AND OPERATORS
Assignment Operators Operator Functionality Example/Explanation = Sets one value equal to another counter=0 Sets the counter to equal the number 0 += Shortcut for adding to the current value. clicks += 2 Sets the variable named counter to equal the current value plus two. -= Shortcut for subtracting from the current clicks -= 2 Sets the variable named value. counter to equal the current value minus two. *= Shortcut for multiplying the current value. clicks *= 2 Sets the variable named counter to equal the current value multiplied by two. /= Shortcut for dividing the current value. clicks /= 2 Sets the variable named counter to equal the current value divided by two.
Comparison Operators Description: The comparison operators compare two items and return a value of "true"if the condition evaluates to true, else they return false.
Introduction to JavaScript
Operator Functionality == Returns a true value if the items are the same
Example/Explanation Counter == 10 Returns the value "true" if the counter's value is currently equal to the number 10 != Returns a true value if the items are not the same Counter != 10 Returns the value "true" if the counter's value is any value except the number 10 > Returns a true value if the item on the left is greater counter>10 Returns the than the item on the right value "true" if the counter's value is larger than the number 10 >= Returns a true value if the item on the left is equal counter>=10 Returns the to or greater than the item on the right value "true" if the counter's value is equal to or larger than the number 10 < Returns a true value if the item on the left is less counter<10 Returns the than the item on the right value "true" if the counter's value is smaller than the number 10 <= Returns a true value if the item on the left is equal counter<=10 Returns the to or less than the item on the right value "true" if the counter's value is equal to or less than the number 10 Computational Operators Description: The computational operators perform a mathematical function on a value or values, and return a single value. Operator Functionality + Adds two values together Subtracts one value from another * Multiplies two values /
++X
X++
--X
X--
Example/Explanation counter+2 Returns the sum of the counter plus 2 counter-2 Returns the sum of the counter minus 2 counter*10 Returns the result of the variable times 10 Divides the value on the left by counter/2 Divides the current value of the the one on the right and returns counter by 2 and returns the result the result Increments the value, and then ++counter Looks at the current value of the returns the result counter, increments it by one, and then returns the result. If the counter has a value of 3, this expression returns the value of 4. Returns the value, and then counter++ Returns the value of the counter, then increments the value increments the counter. If the counter has a value of 3, this expression returns the value of 3, then sets the counter value to 4. Decreases the value, and then --counter Looks at the current value of the returns the result counter, decreases it by one, and then returns the result. If the counter has a value of 7, this expression returns the value of 6. Returns the value, and then counter-- Returns the value of the counter, then decreases the value decreases the counter value. If the counter has a value of 7, this expression returns the value of 7, then sets the counter value to 6.
Logical Operators Description: The logical operators evaluate expressions and then return a true or false value based on the result.
93
Scripting Languages
Operator
&&
||
4.4
Functionality Example/ Explanation Looks at two expressions and returns a If day = 'friday' && date=13 then value of "true" if the expressions on the alert("Are You Superstitious?") left and right of the operator are both Compares the value of the day and the true value of the date. If it is true that today is a Friday and if it is also true that the date is the 13th, then an alert box pops up with the message "Are You Superstitious?" Looks at two expressions and returns a if day='friday'&&date=13 then value of "true" if either one -- but not alert("Are You Superstitious?") else if both -- of the expressions are true. day='friday'||date=13 then alert("Aren't you glad it isn't Friday the 13th?") Compares the value of the day and the value of the date. If it is true that today is a Friday and if it is also true that the date is the 13th, then an alert box pops up with the message "Are You Superstitious?" If both are not true, the script moves onto the next line of code... Which compares the value of the day and the value of the date. If either one -- but not both -- is true, then an alert box pops up with the message "Aren't you glad it isn't Friday the 13th?"
CONTROL STRUCTURES
JavaScript supports the usual control structures: x x
The conditionals if, if...else, and switch; The iterations for, while, do...while, break, and continue;
4.4.1 Conditional Statements Very often when you write code, you want to perform different actions for different decisions. You can use conditional statements in your code to do this. In JavaScript we have three conditional statements: x x x
if statement - use this statement if you want to execute a set of code when a condition is true if...else statement - use this statement if you want to select one of two sets of code to execute switch statement - use this statement if you want to select one of many sets of code to execute
if( myVariable == 2 ) { myVariable = 1; } else { myVariable = 0; } If the value of myVariable in Figure 4.1 is 2 then the first condition evaluates to true and the value of myVariable is set to 1. If it is anything other than 2 then the else part gets executed. Now let us see an example of a nested if statement in Figure 4.2. if ( myVariable == 2 ) { myVariable = 1; 94
} else { If (myVariable == 5 ) { myVariable = 3; } else { myVariable = 4; } }
Introduction to JavaScript
Switch Statement If there exist multiple conditions, the switch statement is recommended. This is because only one expression gets evaluated based on which control directly jumps to the respective case. switch(myVar) { case 1: //if myVar is 1 this is executed case 'sample': //if myVar is 'sample' (or 1, see the next paragraph) //this is executed case false: //if myVar is false (or 1 or 'sample', see the next paragraph) //this is executed default: //if myVar does not satisfy any case, (or if it is //1 or 'sample' or false, see the next paragraph) //this is executed } As shown in Figure 4.3, depending on the value of myvar , the statement of the respective case gets executed. If a case is satisfied, the code beyond that case will also be executed unless the break statement is used. In the above example, if myVar is 1, the code for case 'sample', case false and default will all be executed as well.
4.4.2 Loop Statements
Comment: Please be consistent. If one value is in quotes, it is better to put the others in quotes as well.
A loop is a set of commands that executes repeatedly until a specified condition is met. JavaScript supports two loop statements: for and while. In addition, you can use the break and continue statements within loop statements. Another statement, for...in, executes statements repeatedly but is used for object manipulation. x
For Statement
A for loop repeats until a specified condition evaluates to false. The JavaScript for loop is similar to the Java and C for loops. A for statement looks as follows:
Comment: Please be careful about upper and lower case especially in JavaScript.
for ([initial-expression]; [condition]; [increment-expression]) { Statements } When a for loop executes, the following sequence of operations occur: The initializing expression initial-expression, if any, is executed. This expression usually initializes one or more loop counters, but the syntax allows an expression of any degree of complexity. 2. The condition expression is evaluated. If the value of condition is true, the loop statements execute. If the value of condition is false, the loop terminates. 3. The update expression increment-expression executes. 4. The statements get executed, and control returns to step 2. Actually the syntax
1.
95
Scripting Languages
provides for a single statement; when enclosed in braces { and } , any number of statements are treated as a single statement. The following function contains a for loop that counts the number of selected options in a scrolling list (a select object that allows multiple selections). The for loop declares the variable i and initializes it to zero. It checks that i is less than the number of options in the select object, performs the succeeding if statement, and increments i by one after each pass through the loop. <HTML> <HEAD> <TITLE>IGNOU </TITLE> <SCRIPT LANGUAGE = JavaScript > function howMany(selectObject) { var numberSelected=0 for (var i=0; i < selectObject.options.length; i++) { if (selectObject.options[i].selected==true) numberSelected++ } return numberSelected } </SCRIPT> </HEAD> <BODY> <FORM NAME="selectForm"> <P><B>Choose some music types, then click the button below:</B> <BR><SELECT NAME="musicTypes" MULTIPLE> <OPTION SELECTED> R&B <OPTION> Jazz <OPTION> Blues <OPTION> New Age <OPTION> Classical <OPTION> Opera </SELECT> <P><INPUT TYPE="button" VALUE="How many are selected?" onClick="alert ('Number of options selected: ' + howMany(document.selectForm.musicTypes))"> </FORM> </BODY> </HTML> x
While Statement
The while statement defines a loop that iterates as long as a condition remains true. In the following example the control waits until the value of a text field becomes "go":
while (Document.Form1.Text1.Value != "go") {Statements } In a while loop the condition is evaluated first before executing the statements. x For In Statement This is a different type of loop, used to iterate through the properties of an object or the elements of an array. For example consider the following statement that loops through the properties of the Scores object, using the variable x to hold each property in turn: For (x in Scores) {Statements} x
96
Break Statement
The break statement is used for terminating the current While or For loop and then transferring program control to the statement just after the terminated loop. The
C a n y o f t h e e x a m p l e s h a v e n o s e m i c o l o n s a t t h e e n d o f s t a t e m e n t s .
following function has a break statement that terminates the while loop when i becomes equal to 3, and then returns the value 3 * x.
Introduction to JavaScript
function testBreak(x) { var i = 0 while (i < 6) { if (i == 3) break i++ } return i*x
Comment: The example could be slightly more realistic Â&#x2013; why would one want to terminate at 3?
}
x
Continue Statement
A continue statement terminates execution of the block of statements in a while or for loop and continues execution of the loop with the next iteration. In contrast to the break statement, continue does not terminate the execution of the loop entirely. Instead, x x
In a while loop, it jumps back to the condition. In a for loop, it jumps back to the increment-expression.
The following example shows a While loop with a continue statement that executes when the value of i becomes equal to three. Thus, n takes on the values one, three, seven, and twelve. i=0 n=0 while (i < 5) { i++ if (i == 3) continue n += i }
4.5
OBJECT-BASED PROGRAMMING
JavaScript is a very powerful object-based (or prototype-based) language. JavaScript is not a full-blown OOP (Object-Oriented Programming) language, such as Java, but it is an object-based language. Objects not only help you better understand how JavaScript works, but in large scripts, you can create self-contained JavaScript objects, rather than the procedural code you may be using now. This also allows you to reuse code more often.
4.5.1 Functions Functions are the central working units of JavaScript. Almost all the scripting code uses one or more functions to get the desired result. If you want your page to provide certain a user-defined functionality, then functions are a convenient way of doing so. Therefore it is important that you understand what a function is and how it works. First let us understand the basic syntax of a function; then we look at how to call it. After that you must know how to pass arguments and why you need to do this. Finally, you have to know how to return a value from a function. The following code
97
Scripting Languages
shows the implementation of a function. function example(a,b) { number += a; alert('You have chosen: ' + b); } The function made above can be called using the following syntax. Example(1,'house') In fact, when you define the function Example, you create a new JavaScript command that you can call from anywhere on the page. Whenever you call it, the JavaScript code inside the curly brackets {} is executed. Calling the Function You can call the function from any other place in your JavaScript code. After the function is executed, the control goes back to the other script that called it. alert('Example 1: the House'); example(1,'house'); (write more code) So this script first generates an alert box, then calls the function and after the function is finished it continues to execute the rest of the instructions in the calling code. Arguments You can pass arguments to a function. These are variables, either numbers or strings, which are used inside the function. Of course the output of the function depends on the arguments you give it. In the following example we pass two arguments, the number 1 and the string 'house': example(1,'house'); When these arguments arrive at the function, they are stored in two variables, a and b. You have to declare these in the function header, as you can see below. function example(a,b) <HTML> <HEAD> <TITLE>IGNOU </TITLE> <SCRIPT Language = "JavaScript"> function example(a, b) { var number; number += a ; alert('You have chosen: ' + b); } </SCRIPT> </HEAD> <BODY> <FORM NAME="selectForm"> <P><B>Click the button below:</B> <BR> <P><INPUT TYPE="button" VALUE="Click" onClick="example(1,Â&#x2019;houseÂ&#x2019;)"> </FORM> </BODY>
98
C h a t i s n u m b e r h e r e ? W i l l t h i s c o d e w o r k ? I n a n y c a s e t h e f u n c t i o n d o e s n o t d ... [1]o
Introduction to JavaScript
</HTML>
Figure 4.1: Using Functions
It adds 1 to number and displays You have chosen: house . Of course, if you call the function like example (5,'palace'), then it adds 5 to number and displays You have chosen: palace . The output of the function depends on the arguments you give it. Returning a value One more thing a function can do is to return a value. Suppose we have the following function: <HTML> <HEAD> <TITLE>IGNOU </TITLE> <SCRIPT Language = "JavaScript"> function calculate(a,b,c) { d = (a+b) * c; return d; } </SCRIPT> </HEAD> <BODY> <SCRIPT Language = "JavaScript"> var x = calculate(4,5,9); var y = calculate((x/3),3,5); alert('calculate(4,5,9) = ' +x + ' and ' + ' calculate((x/3),3,5) = ' + y); </SCRIPT> </BODY> </HTML>
99
Scripting Languages
Figure 4.2: Using a Function that Returns a Value
The function shown in Figure 4.8 calculates a number from the numbers you pass to it. When it is done it returns the result of the calculation. The function passes the result back to the function that called it. When the function executes the return statement, control goes back to the calling program without executing any more code in the function, if there is any. The calling of the function is done using the following two statements in the figure: var x = calculate(4,5,9); var y = calculate((x/3),3,5); It means that you have declared a variable x and are telling JavaScript to execute calculate( ) with the arguments 4, 5 and 9 and to put the returned value (81) in x. Then you declare a variable y and execute calculate( ) again. The first argument is x/3, which means 81/3 = 27, so y becomes 150.Of course you can also return strings or even Boolean values (true or false). When using JavaScript in forms, you can write a function that returns either true or false and thus tells the browser whether to submit a form or not.
4.5.2 Executing Deferred Scripts Deferred scripts do not do anything immediately. In order to use deferred commands, you must call them from outside the deferred script. There are three ways to call deferred scripts: x From immediate scripts, using the function mechanism x By user-initiated events, using event handlers x By clicking on links or image-map zones that are associated with the script Calling Deferred Code from a Script A function is a deferred script because it does not do anything until an event, a function, a JavaScript link, or an immediate script calls it. You have probably noticed that you can call a function from within a script. Sometimes you are interested in calling a function from the same script, and in other cases you might want to call it from another script. Both of these are possible. Calling a function from the same script is very simple. You just need to specify the name of the function, as demonstrated in Figure 4.9. <HTML> <HEAD> <TITLE>Calling deferred code from its own script</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-makeLine(30) function makeLine(lineWidth) { document.write("<HR SIZE=" + lineWidth + ">") } makeLine(10) // --> </SCRIPT> </HEAD> <BODY> </BODY> </HTML> 100
Introduction to JavaScript
4.5.3 Objects A JavaScript object is an instance of datatype. Object is given a unique name and the collection of properties of the corresponding object may be accessed using the dot syntax. As a quick introduction to the concept of JavaScript objects, here is the code that creates an instance of an object called myObj: var myObj = new Object(); myObj.business = "Voice and Data Networking"; myObj.CEO = "IGNOU"; myObj.ticker = "CSCO";
Comment: Please put in a short description of the contents of myObj;
After having run that code (in a scope situation that allowed myObj to be accessed as required), you could run this... document.write("My Object ticker symbol is " + myObj.ticker + "."); ...and get a complete sentence in your HTML document. x Document Object The document object is a property of the window object. This object is the container for all HTML HEAD and BODY objects associated within the HTML tags of an HTML document Document Object Properties Property AlinkColor BgColor
Cookie Domain Embeds FgColor FileCreatedDate fileModifiedDate lastModified Layers LinkColor Title URL VlinkColor
Description The color of active links The background color of the web page. It is set in the <BODY> tag. The following code sets the background color to white. document.bgColor = "#FFFFFF" Used to identify the value of a cookie The domain name of the document server An array containing all the plugins in a document The text color attribute set in the <body> tag Use this value to show when the loaded HTML file was created Use this value to show the last change date of the HTML file currently loaded The date the file was modified last An array containing all the layers in a document The color of HTML links in the document. It is specified in the <BODY> tag. The name of the current document as described between the header <TITLE> tags. The location of the current document The color of visited links as specified in the <BODY> tag
Document Object Methods Method Clear Close contextual
elementFromPoint(x, y) getSelection
Description This is depreciated Closes an output stream that was used to create a document object It can be used to specify style of specific tags. The following example specified that text in blockquotes is to be blue: document.contextual(document.tags.blockquote).color = "blue"; Multiple styles may be specified in the contextual method to set the value of text in a <H3> tag that is underlined to the color blue, for example. document.contextual(document.tags.H3, document.tags.U).color = "blue"; Returns the object at point x, y in the HTML document. Get the selected text (if any is selected)
101
Scripting Languages
open([mimeType]) write(expr1[,expr2...exprN])
writeln(expr1[,expr2...exprN])
Opens a new document object with the optional mime type. Add data to a document. Writes the values passed to the write function to the document. For example document.write("<H3>") document.writeln("This is a Header") document.write("</H3>") Adds the passed values to the document appended with a new line character.
x Predefined Objects Let us consider some of the most frequently used predefined objects provided in Javascript. x Math object In most applications we need to perform calculations, whether it is accounting software or scientific software. Programmers are often typecast as good mathematicians. Every mathematician needs a calculator sometimes, or in the case of JavaScript, the Math object. If we want to calculate "2.5 to the power of 8" or "Sin0.9" in your script, then JavaScript's virtual calculator is what you need. The Math object contains a number of manipulating functions: The Math object Methods Math.abs(x) Math.acos(x) Math.asin(x) Math.atan(x) Math.atan2(x, y) Math.ceil(x) Math.cos(x) Math.exp(x)
Description Return absolute value of x Return arc cosine of x in radians Return arc sine of x in radians Return arc tan of x in radians Counterclockwise angle between x axis and point (x,y) Rounds a number up Trigonometric cosine of x (x in radians) Exponential method ex
Math.floor(x) Math.log(x) Math.max(a, b) Math.min(a, b) Math.pow(x, y)
Rounds a number down Natural logarithm of x (base e) Returns the larger of two values Returns the smaller of two values Returns xy
Math.round(x) Math.sin(x) Math.sqrt(x) Math.tan(x) Properties Math.E Math.LN10 Math.LN2 Math.LOG10E Math.LOG2E Math.PI
Rounds x to the closest integer Trigonometric sine of x (x in radians) Square root of x Trigonometric tangent of x (x in radians) Description Euler s constant ( ~ 2.718) Natural logarithm of 10 (~ 2.302) Natural logarithm of 2 (~ 0.693) Base 10 logarithm of Euler s constant (~ 0.0434) Base 2 logarithm of Euler s constant (~1.442) The ratio of a circle s circumference to its diameter (~3.141) Square root of 0.5 ( ~ 0.707) Square root of 2.0 ( ~ 1.414)
Math.SQRT1_2 Math.SQRT2
Let us have Javascript perform some mathematical calculations: //calculate e5 Math.exp(5) //calculate cos(2PI) Math.cos(2*Math.PI) 102
C l e a s e p u t s t a t e m e n t t e r m i n a t o r s e v e r y w h e r e
The "with" statement
Introduction to JavaScript
If you intend to invoke Math multiple times in your script, a good statement to remember is "with." Using it you can omit the "Math." prefix for any subsequent Math properties/methods: with (Math){ var x= sin(3.5) var y=tan(5) var result=max(x,y) } x Date Object The Date object is used to work with dates and times. Creating a Date Instance You should create an instance of the Date object with the "new" keyword. The following line of code stores the current date in a variable called "my_date": var my_date=new Date( ) After creating an instance of the Date object, you can access all the methods of the object from the "my_date" variable. If, for example, you want to return the date (from 1-31) of a Date object, you should write the following: my_date.getDate( ) You can also write a date inside the parentheses of the Date( ) object. The following line of code shows some of the date formats available. new Date("Month dd, yyyy hh:mm:ss"), new Date("Month dd, yyyy"), new Date(yy,mm,dd,hh,mm,ss), new Date(yy,mm,dd), new Date(milliseconds) Here is how you can create a Date object for each of the ways above: var my_date=new Date("October 12, 1988 13:14:00"), var my_date=new Date("October 12, 1988"), var my_date=new Date(88,09,12,13,14,00), var my_date=new Date(88,09,12), var my_date=new Date(500) x Some Date Methods Methods Date( ) GetDate( ) GetDay( )
Explanation Returns a Date object Returns the date of a Date object (from 1-31) Returns the day of a Date object (from 0-6. 0=Sunday, 1=Monday, etc.) GetMonth( ) Returns the month of a Date object (from 0-11. 0=January, 1=February, etc.) GetFullYear( ) Returns the year of the Date object (four digits) GetHours( ) Returns the hour of the Date object (from 0-23) GetMinutes( ) Returns the minute of the Date object (from 0-59) GetSeconds( ) Returns the second of the Date object (from 0-59)
Examples: Date Returns the current date, including date, month, and year. Note that the getMonth method returns 0 in January, 1 in February etc. So add 1 to the getMonth method to display the correct date. 103
Scripting Languages
<HTML> <BODY> <SCRIPT LANGUAGE="JAVASCRIPT"> var d = new Date() document.write("date = ") document.write(d.getDate( )) document.write(".") document.write(d.getMonth() + 1) document.write(".") document.write(d.getFullYear()) document.write("time = ") document.write(d.getHours()) document.write(".") document.write(d.getMinutes() + 1) document.write(".") document.write(d.getSeconds()) </SCRIPT> </BODY> </HTML>
Figure 4.3: Using the Date Object
Time Returns the current time for the timezone in hours, minutes, and seconds as shown in Figure 5.11. To return the time in GMT use getUTCHours, getUTCMinutes etc. x Array Object An Array object is used to store a set of values in a single variable name. Each value is an element of the array and has an associated index number. You can refer to a particular element in the array by using the name of the array and the index number. The index number starts at zero. You create an instance of the Array object with the "new" keyword. var family_names=new Array(5) The expected number of elements goes inside the parentheses, in this case it is 5. You assign data to each of the elements in the array like this: family_names[0]="Sharma" family_names[1]="Singh" family_names[2]="Gill" family_names[3]="Kumar" family_names[4]="Khan" The data can be retrieved from any element by using the index of the array element you want: 104
Mother=family_names[0] father=family_names[1]
Introduction to JavaScript
The Most Commonly Used Array Methods Methods Explanation Length Returns the number of elements in an array. This property is assigned a value when an array is created reverse( ) Returns the array reversed slice( ) Returns a specified part of the array Sort( ) Returns a sorted array
x History Object The History object is a predefined JavaScript object which is accessible through the history property of a window object. The window.history property is an array of URL strings, which reflect the entries in the History object. The History object consists of an array of URLs, accessible through the browser's Go menu, which the client has visited within a window. It is possible to change a window's current URL without an entry being made in the History object by using the location.replace method. The History object contains 4 properties and 3 methods as summarized here: Property Current Next Previous Length
Summary for History Object Specifies the URL of the current history entry. Specifies the URL of the next history entry. Specifies the URL of the previous history entry. Reflects the number of entries in the history list.
Method Summary for History Object Back( ) Loads the previous URL in the history list. Forward( ) Loads the next URL in the history list. Go( ) Loads a URL from the history list.
x Location Object The Location object is part of a Window object and is accessed through the window.location property. It contains the complete URL of a given Window object, or, if none is specified, of the current Window object. Syntax : All of its properties are strings representing different portions of the URL, which generally takes the following form: <protocol>//<host>[:<port>]/<pathname>[<hash>][<search>] You can create a Location object by simply assigning a URL to the location property of an object: Syntax: Property Hash Host hostname Href pathname Port protocol
window.location = "file:///C:/Projects" Description The hash property is a string beginning with a hash (#), that specifies an anchor name in an HTTP URL The host property is a string comprising the hostname and port strings. The hostname property specifies the server name, subdomain and domain name (or IP address) of a URL. The href property is a string specifying the entire URL, and of which all other link properties are substrings. The pathname property is a string portion of a URL specifying how a particular resource can be accessed. The port property is a string specifying the communications port that the server uses. The protocol property is the string at the beginning of a URL, up to and I ncluding the first colon (:), which specifies the method of access to the URL.
Comment: Throughout this chapter there has been little regard for the correctness of the case of a letter. Please ensure that the correct case is used unless the case is not significant. In Javascript, it usually is significant.
105
Scripting Languages
Property search
Description The search property is a string beginning with a question mark that specifies any query information in an HTTP URL.
Some Common Methods Method reload Replace
Description The reload method forces a reload of the windows current document, i.e. the one contained in the Location.href The replace method replaces the current history entry with the specified URL. After calling the replace method to change the history entry, you cannot navigate back to the previous URL using the browser's Back button.
Check Your Progress 1 1. Write a JavaScript code block using arrays and generate the current date in words. This should include the day, the month and the year. 2. Write JavaScript code that converts the entered text to upper case. 3. Write JavaScript code to validate Username and Password. Username and Password are stored in variables. 4. Design the following Web page
C P l e a s e b e a c c u r a t e . I f y o u d o u s e t h e r e p l a c e
4.6
MESSAGEBOX IN JAVASCRIPT
In this section, we cover the topic of dialog boxes. This topic is important for understanding the way parameters are passed between different windows. This mechanism is a key component of some of the new capabilities of Internet Explorer 5.5 and 6.0, such as print templates. You use dialog boxes all over. The alert box is probably the most popular one.
4.6.1 Dialog Boxes In this the user cannot switch to the window without closing the current window. This kind of dialog box is referred to as a modal dialog box. You create a modal dialog box with showModalDialog(). Syntax: showModalDialog (Â&#x201C;MessageÂ&#x201D;) <HTML> <HEAD> <SCRIPT LANGUAGE="JAVASCRIPT">
106
function fnOpenModal(){ window.showModalDialog("test.htm") }
m e t h o d b u t d o n o t c h a n g e t h e h ... [2]i
</SCRIPT> </HEAD> <BODY> <FORM NAME = IGNOU> <INPUT TYPE="button" VALUE="Push Me" onclick="fnOpenModal()"> </BODY> </HTML>
Introduction to JavaScript
4.6.2 Alert Boxes Alert boxes can be utilized for a variety of things, such as to display when an input field has not been entered properly, to display a message on document open or close, or to inform someone that they have clicked a link to leave your site. Whatever the use, the construction is essentially the same. Syntax : alert( message ) The following example will generate a simple alert box based on clicking either a link or a form button. <html> <title>Codeave.com(JavaScript: Alert Box)</title> <body bgcolor="#ffffff"> <!-- Example of a form button that will open an alert box --> <form> <input type="button" value="Open Alert Box" onClick='alert("Place your message here... \n Click OK to continue.")'> </form> <p> <!-- Example of a link that will open an alert box --> <a href='javascript:onClick=alert("Place your message here... \n Click OK to continue.")'> Open Alert Box</a> </body> </html>
Figure 4.4: Using an Alert Box
4.6.3 Confirm Boxes The JavaScript confirm alert box differs from a regular alert box in that it provides two choices to the user, OK and Cancel. Typically, you ll see confirmation boxes utilized on links where the destination is outside the domain of the page you are currently on or to alert you of potentially objectionable material. The following example will display a confirmation alert box when either a link or form button is clicked. Once either OK or Cancel are selected an alert box will follow to display which was chosen. <html>
107
Scripting Languages
<body bgcolor="#FFFFFF"> <title>CodeAve.com(JavaScript: Confirm Alert Box)</title> <script language="JavaScript"> <!-function confirm_entry() { input_box=confirm("Click OK or Cancel to Continue"); if (input_box==true) { // Output when OK is clicked alert ("You clicked OK"); } else { // Output when Cancel is clicked alert ("You clicked cancel"); } } --> </script> Click <a href="JavaScript:confirm_entry()">here</a> <p> <form onSubmit="confirm_entry()"> <input type="submit" > </form> </body> </html>
4.6.4 Prompt Boxes The prompt box allows the user to enter information. The benefits of using a prompt are fairly limited and the use of forms would often be preferred (from a user perspective). The prompt box title text cannot be changed and the same applies to button text. You can have 2 lines of text using \n where the new line starts (please note that the opera browser up to version 7 will only display 1 line of text) The text entry field is similar to a form input type="text". The 2 buttons are OK and Cancel. The value returned is either the text entered or null. The syntax for the prompt is prompt("your message",""); (script tags omitted) "your message","" the ,"" holds the default text value "" = empty.
4.7
JAVASCRIPT WITH HTML
4.7.1 Events
108
Events are actions that can be detected by JavaScript. An example would be the onMouseOver event, which is detected when the user moves the mouse over an object. Another event is the onLoad event, which is detected as soon as the page is finished loading. Usually, events are used in combination with functions, so that the function is called when the event happens. An example would be a function that would animate a button. The function simply shifts two images. One image that shows the button in an "up" position, and another image that shows the button in a "down" position. If this function is called using an onMouseOver event, it will make it look as if the button is pressed down when the mouse is moved over the image.
4.7.2 Event Handlers
Introduction to JavaScript
An event handler executes a segment of a code based on certain events occurring within the application, such as onLoad or onClick. JavaScript event handlers can be divided into two parts: interactive event handlers and non-interactive event handlers. An interactive event handler is the one that depends on user interaction with the form or the document. For example, onMouseOver is an interactive event handler because it depends on the user's action with the mouse. An example of a non-interactive event handler is onLoad, as it automatically executes JavaScript code without the need for user interaction. Here are all the event handlers available in JavaScript. x onLoad and onUnload onLoad and onUnload are mainly used for popups that appear when the user enters or leaves the page. Another important use is in combination with cookies that should be set upon arrival or when leaving your pages. For example, you might have a popup asking the user to enter his name upon his first arrival to your page. The name is then stored in a cookie. Furthermore, when the visitor leaves your page a cookie stores the current date. Next time the visitor arrives at your page, it will have another popup saying something like: "Welcome Ajay, this page has not been updated since your last visit 8 days ago". Another common use of the onLoad and onUnload events is in making annoying pages that immediately open several other windows as soon as you enter the page.
x
OnFocus and onBlur
The onFocus event handler executes the specified JavaScript code or function on the occurrence of a focus event. This is when a window, frame or form element is given the focus. This can be caused by the user clicking on the current window, frame or form element, by using the TAB key to cycle through the various elements on screen, or by a call to the window.focus method. Be aware that assigning an alert box to an object's onFocus event handler will result in recurrent alerts as pressing the 'OK' button in the alert box will return focus to the calling element or object. The onFocus event handler uses the Event object properties. type - this property indicates the type of event. target - this property indicates the object to which the event was originally sent. The following example shows the use of the onFocus event handler to replace the default string displayed in the text box. Note that the first line is HTML code and that the text box resides on a form called 'myForm'. Syntax : onfocus = script <HTML> <HEAD> </HEAD> <BODY> <FORM NAME = "myform" > <input type="text" name="myText" value="Give me focus" onFocus = "changeVal()"> </BODY>
109
Scripting Languages
<SCRIPT LANGUAGE="JAVASCRIPT"> s1 = new String(myform.myText.value) function changeVal() { s1 = "I'm feeling focused" document.myform.myText.value = s1.toUpperCase() } </SCRIPT> </HTML>
Figure 4.5: Using the onFocus Method
onblur = script The onBlur event handler executes the specified JavaScript code or function on the occurrence of a blur event. This is when a window, frame or form element loses focus. This can be caused by the user clicking outside of the current window, frame or form element, by using the TAB key to cycle through the various elements on screen, or by a call to the window.blur method. The onBlur event handler uses the Event object properties. type - this property indicates the type of event. target - this property indicates the object to which the event was originally sent. The following example shows the use of the onBlur event handler to ask the user to check that the details given are correct. Note that the first line is HTML code. <HTML> <HEAD> </HEAD> <BODY> <FORM NAME = "myform" > Enter email address <INPUT TYPE="text" VALUE="" NAME="userEmail" onBlur=addCheck( )> </BODY> <SCRIPT LANGUAGE="JAVASCRIPT"> function addCheck() { alert("Please check your email details are correct before submitting") } </SCRIPT> </HTML> 110
Introduction to JavaScript
x OnError The onError event handler executes the specified JavaScript code or function on the occurrence of an error event. This happens when an image or document causes an error during loading. A distinction must be made between a browser error, when the user types in a non-existent URL, for example, and a JavaScript runtime or syntax error. This event handler will only be triggered by a JavaScript error, not a browser error. Apart from the onError handler triggering a JavaScript function, it can also be set to onError="null", which suppresses the standard JavaScript error dialog boxes. To suppress JavaScript error dialogs when calling a function using onError, the function must return true (Example 2 below demonstrates this). There are two things to bear in mind when using window.onerror. First, this only applies to the window containing window.onerror, not any others, and secondly, window.onerror must be spelt all lower-case and contained within <script> tags; it cannot be defined in HTML (this obviously does not apply when using onError with an image tag, as in example 1 below). The onFocus event handler uses the Event object properties. type - this property indicates the type of event. target - this property indicates the object to which the event was originally sent. The first example suppresses the normal JavaScript error dialogs if a problem arises when trying to load the specified image, while Example 2 does the same, but applied to a window, by using a return value of true in the called function, and displays a customized message instead. Syntax : Object.onError = [function name] Example 1 <IMG NAME="imgFaculty" SRC="dodgy.jpg onError="null"> Example 2 <script type="text/javascript" language="JavaScript"> s1 = new String(myForm.myText.value) window.onerror=myErrorHandler function myErrorHandler() { alert('A customized error message') return true } </script> <body onload=nonexistantFunc( )>
Check Your Progress 2 Design a Web page that displays a welcome message whenever the page is loaded and an Exit message whenever the page is unloaded.
4.8
FORMS
Each form in a document creates a form object. Since a document can contain more than one form, Form objects are stored in an array called forms.
4.8.1 Forms Array
111
Scripting Languages
Using the forms[ ] array we access each Form object in turn and show the value of its name property in a message box. Let us have a look at an example that uses the forms array. Here we have a page with three forms on it.
<HTML> <HEAD> <SCRIPT LANGUAGE=JavaScript> function window_onload() { var numberForms = document.forms.length; var formIndex; for (formIndex = 0; formIndex < numberForms; formIndex++) { alert(document.forms[formIndex].name); } } </SCRIPT> </HEAD> <BODY LANGUAGE=JavaScript onLoad="window_onload()"> <FORM NAME="form1"> <P>This is inside form1</P> </FORM> <FORM NAME="form2"> <P>This is inside form2</P> </FORM> <FORM NAME="form3"> <P>This is inside form3</P> </FORM> </BODY> </HTML> Within the body of the page we define three forms. Each form is given a name, and contains a paragraph of text. Within the definition of the <BODY> tag, the window_onload( ) function is connected to the window object's onLoad event handler. <BODY LANGUAGE=JavaScript onLoad="return window_onload( )"> This means that when the page is loaded, our window_onload() function will be called. The window_onload( ) function is defined in a script block in the HEAD of the page. Within this function we loop through the forms[ ] array. Just like any other JavaScript array, the forms[ ] array has a length property, which we can use to determine how many times we need to loop. Actually, as we know how many forms there are, we could just write the number in. However, here we are also demonstrating the length property, since it is then easier to add to the array without having to change the function. Generalizing your code like this is a good practice to follow. The function starts by getting the number of Form objects within the forms array and stores it in the variable numberForms. function window_onload( ) { var numberForms = document.forms.length; Next we define a variable, formIndex, to be used in our for loop. After this comes the for loop itself. 112
C h i s e x a m p l e c o d e d o e s n o t w o r k c o r r e c t l y . P l e a s e c o r r e c t .
var formIndex; for (formIndex = 0; formIndex < numberForms; formIndex++) { alert(document.forms[formIndex].name); }
Introduction to JavaScript
Remember that since the indices for arrays start at zero, our loop needs to go from an index of 0 to an index of numberForms - 1. We do this by initializing the formIndex variable to zero, and setting the condition of the for loop to formIndex < numberForms. Within the for loop's code, we pass the index of the desired form (that is, formIndex) to document.forms[ ], which gives us the Form object at that array index in the forms array. To access the Form object's name property, we put a dot at the end and the name of the property, name. x Form Object Form is a property of the document object. This corresponds to an HTML input form constructed with the FORM tag. A form can be submitted by calling the JavaScript submit method or clicking the form SUBMIT button. Some of the form properties are: x Action - This specifies the URL and CGI script file name the form is to be submitted to. It allows reading or changing the ACTION attribute of the HTML FORM tag. x Button An object representing a GUI control. x Elements - An array of fields and elements in the form. x Encoding - This is a read or write string. It specifies the encoding method the form data is encoded in, before being submitted to the server. It corresponds to the ENCTYPE attribute of the FORM tag. The default is "application/x-www-formurlencoded". Other encoding includes text/plain or multipart/form- data. x Length - The number of fields in the elements array, that is, the length of the elements array. x Method - This is a read or write string. It has the value "GET" or "POST". x Name - The form name. Corresponds to the FORM Name attribute. x Password An object representing a password field. x Radio An object representing a radio button field. x Reset - An object representing a reset button. x Select - An object representing a selection list. x Submit - An object representing a submit button. x Target - The name of the frame or window to which the form submission response is sent by the server. Corresponds to the FORM TARGET attribute. x Text - An object representing a text field. x Textarea - An object representing a text area field. Some of the Form Element Properties are: x Name It provides access to an element s name attribute. It applies to all form elements. x Type Identifies the object s type. It applies to all form elements. x Value - Identifies the object s value. It applies to all, button, checkbox, hidden, password, radio, reset, submit, text or textarea. x Checked - Identifies whether the element is checked. It applies to checkbox and radio. x Default checked - Identifies whether the element is checked by default. It applies
113
Scripting Languages
to checkbox and radio. x Default value Identifies the object s default value. It applies to password, submit and textarea. x Length - Identifies the length of a select list. It applies to select. x Options An array that identifies the options supported by the select list. It applies to select. Syntax : <FORM Name = myform Action = mailto:subscribe@abc.com Method = POST Enctype = multipart/form-data onsubmit = return check( ) > <HTML> <HEAD> <SCRIPT LANGUAGE = javascript > function check () { if (document.myform.email.value == ) { alert( please enter your email-id ); return false; } } </SCRIPT> </HEAD> <BODY> Enter your Email to subscribe : <p> <FORM Name = myform Action = mailto:subscribe@abc.com Method = POST Enctype = multipart/form-data onsubmit = return check() > <Input type = text Name = email > <Input type = submit value = submit > </FORM> </BODY> </HTML> The above code is used for obtaining the user s email-id. In case the user clicks the submit button without entering the email-id in the desired text field, he sees a message box indicating that the email-id has not been entered.
Case Study Design a Web page with appropriate functionality to accept an order for a fast food outlet. It should check if the user has entered a valid name and email-id. It should also calculate the value of the order.
114
<HTML> <HEAD> <TITLE>Donald Duck</TITLE> <SCRIPT Language="JavaScript"> var m; function chk_name() { if( document.form1.txt_name.value == "") { alert("Please enter your name"); document.form1.txt_name.focus(); } } function chk_email() { var str = document.form1.txt_email.value ; var i;
C h e s o l u t i o n t o t h e c a s e s t u d y d o e s n o t w o r k c o r r e c t l y . T h i s n e e d s t o b e t a k e ... [3]n
if ( document.form1.txt_email.value == "") { alert("Please enter your Email-ID"); document.form1.txt_email.focus(); } i = str.indexOf("@"); if ( i< 0) { alert ("Please enter a valid Email-Id"); } }
Introduction to JavaScript
function mainitem(F1) { var z=" "; for(j=0;j<3;j++) { for(i=0;i<F1.elements[j].length;i++) { if (F1.elements[j][i].selected) { var y=F1.elements[j].options[i].value; z=z+"\n"+y; F1.elements[3].value=z; } } } m=z; } function cal(F1) { var d=0; for(j=0;j<3;j++) { for(i=0;i<F1.elements[j].length;i++) { if (F1.elements[j][i].selected) { var y=F1.elements[j].options[i].value; s=new String(y); var a=s.indexOf(">"); var b=s.substring(a+1,a+3); c=parseInt(b); d=d+c; } } } p="Total cost of the selected items="+d; m=m+"\n"+p; F1.elements[3].value=m; } function clr(F1) { F1.elements[3].value=" "; } </SCRIPT> </HEAD> <BODY> <h2><font color="blue"><center> Welcome to the World renowned online Fast Food Center </font>
115
Scripting Languages
116
<font color="red"> Donald Duck ! </center></font></h2> <Form name="form1" ACTION = "mailto:dlc@ignou.ac.in" METHOD = POST> Select the Menu Items of your choice and then click on the Total Cost to find the bill amount<BR><BR> <Table > <TR valign=top ><td> Major dishes :<BR> <select name="s1" MULTIPLE onBlur="mainitem(this.form)"> <option value="Onion cheese capsicum Pizza->300" selected> Onion cheese capsicum Pizza <option value="Onion mushroom Pizza->200"> Onion mushroom Pizza <option value="Chicken Tikka Pizza->460"> Chicken Tikka Pizza <option value="Cheese Pizza->150"> Cheese Pizza </select> <BR><BR></td> <td> </td><td> </td> <td> Soups :<BR> <select name="s2" MULTIPLE onBlur="mainitem(this.form)"> <option value="Tomato Soup->70"> Tomato Soup <option value="Sweet corn Soup->80">Sweet corn Soup <option value="Sweet n Sour soup->90">Sweet n Sour soup <option value="Mixed veg soup->50">Mixed veg soup </select> <BR><BR></td> <td> </td><td> </td> <td> Miscellaneous :<BR> <select name="s3" onBlur="mainitem(this.form)"> <option value=" ">'Desserts' <option value="Milkshakes->35">Milkshakes <option value="Soft drinks->20">Soft drinks <option value="Ice cream sodas->25">Softy </select> <BR><BR></td> <td> </td><td> </td> </TR> </Table> <Table> <TR valign=top><td> The items selected form the Menu are : <TEXTAREA Name="TA1" Rows=10 Cols=50> </TEXTAREA><BR><BR></td> <td> </td><td> </td> <td><BR> <input type="button" Value="Total Cost" onClick="cal(this.form)"> <input type="button" Value="Clear" onClick="clr(this.form)"> </td> </TR> </Table> <HR noshade> <h2><font color="red"> Personal Details </center></font></h2> <Table > <TR valign=top ><td> Name:<BR> <Input Type = "Text" Name = "txt_name" Onblur = "chk_name()">
Introduction to JavaScript
<BR><BR></td> <td> </td><td> </td> <td> Contact Address :<br> <TEXTAREA Name="TA2" Rows=3 Cols=10> </TEXTAREA> <BR><BR></td> <td> </td><td> </td> <td> Email :<BR> <Input Type = "Text" Name = "txt_email" Onblur = "chk_email()"> <BR><BR></td> <td> </td><td> </td> </TR> </Table> <Table> <TR valign=top ><td> Phone :<BR> <Input Type = "Text" Name = "txt_phone"> <BR><BR></td> <td> </td><td> </td> <td> <BR> <Input Type = "submit" Name = "btnsubmit" Value = " <BR><BR></td> <td> </td><td> </td> </TR> </Table> </Form> </BODY> </HTML>
Submit
">
Check Your Progress 3 1.
Design the following Web page.
Design the following Web site
117
Scripting Languages
2.
Design the following Web page.
3. Design the following Web page in such a way that selecting any option from the radio button displays the appropriate result in the Result box.
4. Suppose you have an order form that updates automatically each time you enter or change a quantity, the cost for that item and the total cost are updated. Each field must be validated. Design the following web page. (Case Study)
4.9
SUMMARY
In this unit we have learned about the major features of JavaScript. Besides normal programming constructs, datatypes and variables, we have also discussed the most commonly used objects. These are: Document, Math, Date, History, Location etc. The Submit and Reset objects are used to submit the information to the server and reset the information entered, respectively. Finally, we discussed a very important object, the Form object.
4.10
SOLUTIONS/ ANSWERS
Check Your Progress 1 1.
118
<HTML> <HEAD>
<TITLE> Date validations </TITLE> <SCRIPT> var monthNames = new Array(12); monthNames[0]= "January"; monthNames[1]= "February"; monthNames[2]= "March"; monthNames[3]= "April"; monthNames[4]= "May"; monthNames[5]= "June"; monthNames[6]= "July"; monthNames[7]= "August"; monthNames[8]= "September"; monthNames[9]= "October"; monthNames[10]= "November"; monthNames[11]= "December";
Introduction to JavaScript
var dayNames = new Array(7); dayNames[0]= "Sunday"; dayNames[1]= "Monday"; dayNames[2]= "Tuesday"; dayNames[3]= "Wednesday"; dayNames[4]= "Thursday"; dayNames[5]= "Friday"; dayNames[6]= "Saturday"; function customDateString (m_date) { var daywords = dayNames[m_date.getDay()]; var theday = m_date.getDate(); var themonth = monthNames[m_date.getMonth()]; var theyear = m_date.getYear(); return daywords + ", " + themonth + " " + theday + ", " + theyear; } </SCRIPT> </HEAD> <BODY> <H1>WELCOME!</H1> <SCRIPT> document.write(customDateString( new Date())) </SCRIPT> </BODY> </HTML> 2. <HTML> <HEAD> <SCRIPT language="JavaScript"> function checkData(column_data) { if (column_data != "" && column_data.value != column_data.value.toUpperCase( )) { column_data.value = column_data.value.toUpperCase( ) } } </SCRIPT> </HEAD>
Comment: This works, but what is the second text field for?
119
Scripting Languages
<BODY> <FORM> <INPUT TYPE="text" NAME="collector" SIZE=10 onChange="checkData(this)"> <INPUT TYPE="text" NAME="dummy" SIZE=10> </FORM> </BODY> </HTML> 3. <HTML> <HEAD> <TITLE>Password Validation</TITLE> <SCRIPT language="JavaScript"> <!-var userpassword = new Array(4); userpassword[0]= "Ajay"; userpassword[1]= "ajay"; userpassword[2]= "Rohan"; userpassword[3]= "rohan"; function checkOut() { var flag =0; var flag1 =0; var i =0; var j =0;
120
for (x=0; x<document.survey.elements.length; x++) { if (document.survey.elements[x].value == "") { alert("You forgot one of the required fields. Please try again") return; } } var user= document.survey.elements[0].value var password = document.survey.elements[1].value while(i<=3) { if(userpassword[i] == user) { j=i; j++; if(userpassword[j] == password) { flag=1; break; } } i+=2; } if(flag == 0) { alert("Please enter a valid user name and password") return;
} else { alert("Welcome !!\n" +document.forms[0].Username.value); }
Introduction to JavaScript
return; } //--> </SCRIPT> </HEAD> <BODY> <FORM ACTION="" method="POST" NAME="survey" onSubmit="return checkOut(this.form)"> <INPUT TYPE="TEXT" NAME="Username" SIZE="15" MAXLENGTH="15"> User Name <BR><INPUT TYPE="PASSWORD" NAME="Pasword" SIZE="15">Password <BR><INPUT TYPE="SUBMIT" VALUE="Submit"><INPUT TYPE="RESET" VALUE="Start Over"> </FORM> </BODY> </HTML> 4. <HTML> <HEAD> <TITLE>Displaying the Date and time in the Browser</TITLE> </HEAD> <BODY> <SCRIPT LANGUAGE="JavaScript"> function begin(form) { form_name = form; time_out=window.setTimeout("display_date()",500) } function display_date() { form_name.date.value=new Date(); time_out=window.setTimeout("display_date()",1000) } function display_clock() { document.write('<FONT COLOR=red SIZE=+1><FORM NAME=time_form><CENTER><BR><BR>Current Date & Time :') document.write(' <INPUT NAME=date size=19 value=""</FORM></FONT></CENTER>') begin(document.time_form) } display_clock() </SCRIPT> </BODY> </HTML>
Check Your Progress 2 1. 121
Scripting Languages
<HTML> <HEAD> <TITLE>Creating and Using User Defined Functions</TITLE> <SCRIPT LANGUAGE="JavaScript"> var name = ""; function hello( ) { name = prompt('Enter Your Name:','Name'); alert('Greetings ' + name + ', Welcome to my page!'); } function goodbye( ) { alert('Goodbye ' + name + ', Sorry to see you go!'); } </SCRIPT> </HEAD> <BODY onLoad="hello( );" onUnload="goodbye( );"> <IMG SRC="Images\Pinkwhit.gif "> </BODY> </HTML> Check Your Progress 3 1. <HTML> <HEAD> <TITLE>FORMS</TITLE> <!-- This code allows to access the Form objects Elements Array //--> <SCRIPT Language="JavaScript"> function Ver(form1) { v=form1.elements.length; if (form1.elements[3].name=="Button1") { alert('First form name : '+document.forms[0].name); alert('No. of Form elements of ' +document.forms[0].name + ' = '+v); } else if (form1.elements[4].name=="Button2") { alert('Second form name : '+document.forms[1].name); alert('No. of Form elements of ' +document.forms[1].name + ' = '+v); } for(i=0;i<v;i++) alert(form1.elements[i].name+ ' is at position '+i); } </SCRIPT> </HEAD>
122
<BODY> <FORM Name="Survey Form 1"> FIRST FORM: <i><b>Survey Form 1 </b></i><BR><BR> First Name : <Input Type=Text Name="Text1" Value=""><BR><BR> <Input Type="radio" Name="Radio1" Value=""> Fresher <Input Type="radio" Name="Radio1" Value=""> Experienced<BR><BR> <Input Type="Button" Name="Button1" Value="Click1" onClick="Ver(form)"> </FORM>
Introduction to JavaScript
<FORM Name="Survey Form 2"> SECOND FORM: <i><b> Survey Form 2 </b></i><BR><BR> Name : <Input Type="Text" Name="Text2" Value=""> <BR><BR> Password : <Input Type="Password" Name="Pass2" Value=""> <BR><BR> <Input Type="CheckBox" Name="Check1" Value="" > Employed <Input Type="CheckBox" Name="Check2" Value="" > Studying <BR><BR> <Input Type="Button" Name="Button2" Value="Click2" onClick="Ver(form)"> </FORM> </BODY> </HTML> 2. <HMTL> <HEAD> <TITLE>FORMS</TITLE> <!-- This code checks the Checkbox when the button is clicked //--> <SCRIPT Language='JavaScript'> function Chk(f1) { f1.Check.checked=true; alert(" The Checkbox just got checked "); f1.Check.checked=false; f1.Radio[0].checked=true; f1.Radio[1].checked=false; alert(" The Radio button just got checked "); } </SCRIPT> </HEAD>
<BODY> <FORM> Client Name : <Input Type=Text Name="Text" Value=""><BR><BR>
Comment: The desired functionality is not apparent in this question. It should be stated explicitly.
123
Scripting Languages
Client Address: <Input Type=Text Name="Text1" Value=""> <BR><BR> Client E-mail Address :<Input Type=Text Name="Text2" Value=""><BR><BR> <Input Type="radio" Name="Radio" Value=""> Male <Input Type="radio" Name="Radio" Value=""> Female<BR><BR> <Input Type="CheckBox" Name="Check" Value=""> Employed <BR><BR> <Input Type="Button" Name="Bt" Value="Set Element Array Value" onClick="Chk(this.form)"> </FORM> </BODY> </HTML> 3. <HTML> <HEAD> <TITLE> Working with Radio Buttons </TITLE> <SCRIPT LANGUAGE="JavaScript"> function calculate(form) { if(form.elements[2].checked) { form.result.value = form.entry.value * form.entry.value; } else { form.result.value = form.entry.value * 2; } } </SCRIPT> </HEAD> <BODY> <FORM > <CENTER><BR> <B>Value:</B> <INPUT TYPE="text" NAME="entry" VALUE=0> <BR><BR> <SPACER Size= 190> <B>Action:<B><BR> <SPACER Size = 225> <INPUT TYPE="radio" NAME="action1" VALUE="twice" onClick="calculate(this.form);">Double<BR> <SPACER Size = 225> <INPUT TYPE="radio" NAME="action1" VALUE="square" onClick="calculate(this.form);">Square <BR><BR> <B>Result:</B> <INPUT TYPE=text NAME="result" onFocus = "this.blur();"> </CENTER> </FORM>
124
</BODY> </HTML> 4. (Case Study) <HTML>
Introduction to JavaScript
Comment: This code keeps saying Invalid Phone or Invalid Name . This needs to be corrected.
<HEAD><TITLE>Order Form</TITLE> <SCRIPT> // function to calculate the total cost field function Total() { var tot = 0; tot += (240 * document.order.qty1.value); tot += (270 * document.order.qty2.value); tot += (300 * document.order.qty3.value); tot += (600 * document.order.qty4.value); document.order.totalcost.value = tot; } // function to update cost when quantity is changed function UpdateCost(number, unitcost) { costname = "cost" + number; qtyname = "qty" + number; var q = document.order[qtyname].value; document.order[costname].value = q * unitcost; Total(); } // function to copy billing address to shipping address function CopyAddress() { if (document.order.same.checked) { document.order.shipto.value = document.order.billto.value; } } //global variable for error flag var errfound = false; //function to validate by length function ValidLength(item, len) { return (item.length >= len); } //function to validate an email address function ValidEmail(item) { if (!ValidLength(item, 5)) return false; if (item.indexOf ('@', 0) == -1) return false; return true; } // display an error alert
125
Scripting Languages
function error(elem, text) { // abort if we already found an error if (errfound) return; window.alert(text); elem.select(); elem.focus(); errfound = true; } // main validation function function Validate() { errfound = false; if (!ValidLength(document.order.name1.value,6)) error(document.order.name1,"Invalid Name"); if (!ValidLength(document.order.phone.value,10)) error(document.order.phone,"Invalid Phone"); if (!ValidLength(document.order.billto.value,30)) error(document.order.billto,"Invalid Billing Address"); if (!ValidLength(document.order.shipto.value,30)) error(document.order.shipto,"Invalid Shipping Address"); if (!ValidEmail(document.order.email.value)) error(document.order.email, "Invalid Email Address"); if (document.order.totalcost.value == "") error(document.order.qty1, "Please Order at least one item."); if (document.order.payby.selectedIndex != 1) { if (!ValidLength(document.order.creditno.value,2)) error(document.order.creditno,"Invalid Credit/Check number"); } return !errfound; /* true if there are no errors */ } </SCRIPT> </HEAD> <BODY> <H1>Online Cake Order Form</H1> <FORM NAME="order" onSubmit="return Validate();"> <B>Name:</B> <INPUT TYPE="text" NAME="name1" SIZE=20> <B>Phone: </B> <INPUT TYPE="text" NAME="phone" SIZE=15> <B>E-mail address:</B> <INPUT TYPE="text" NAME="email" SIZE=20><BR><BR> <B>Shipping Address:</B> <BR>
126
<TEXTAREA NAME="shipto" COLS=40 ROWS=4 onChange="CopyAddress();"> Enter your shipping address here. </TEXTAREA>
Introduction to JavaScript
<B>Products to Order:</B><BR> Qty: <INPUT TYPE="TEXT" NAME="qty1" VALUE="0" SIZE=4 onChange = "UpdateCost(1, 240);"> Cost: <INPUT TYPE="TEXT" NAME="cost1" SIZE=6> (Rs.240 ) Vanilla cake <BR> Qty: <INPUT TYPE="TEXT" NAME="qty2" VALUE="0" SIZE=4 onChange = "UpdateCost(2, 270);"> Cost: <INPUT TYPE="TEXT" NAME="cost2" SIZE=6> (Rs.270 ) Strawberry cake <BR> Qty: <INPUT TYPE="TEXT" NAME="qty3" VALUE="0" SIZE=4 onChange = "UpdateCost(3, 300);"> Cost: <INPUT TYPE="TEXT" NAME="cost3" SIZE=6> (Rs.300 ) Black Forest cake <BR> Qty: <INPUT TYPE="TEXT" NAME="qty4" VALUE="0" SIZE=4 onChange = "UpdateCost(4, 600);"> Cost: <INPUT TYPE="TEXT" NAME="cost4" SIZE=6> (Rs.600 ) Chocolate cake <HR> <B>Total Cost:</B> SIZE=8><HR> <B>
<INPUT
TYPE="TEXT"
NAME="totalcost"
Method of Payment</B>: <SELECT NAME="payby"> <OPTION VALUE="check" SELECTED> Check or Money Order <OPTION VALUE="cash">Cash or Cashier's Check <OPTION VALUE="credit">Credit Card (specify number) </SELECT><BR> <B>Credit Card or Check Number:</B>: <INPUT TYPE="TEXT" NAME="creditno" SIZE="20"><BR> <INPUT TYPE="SUBMIT" NAME="submit" VALUE="Send Your Order"> <INPUT TYPE="RESET" VALUE="Clear Form"> </FORM> </BODY> </HTML>
4.11
FURTHER READINGS
1. JavaScript Programmers Reference, Cliff Wootton. Publisher: Wrox Press Inc. Year 1999. 2. Beginning JavaScript, Paul Wilton. Publisher: Wrox Press Inc. 1st Edition 3. JavaScript: The Definitive Guide, David Flanagan. Publisher: O'Reilly. 4th Edition 2001. 4. The JavaScript Bible, Danny Goodman. Publisher: John Wiley & Sons Inc. Edition 2001.
127
Page 98: [1] Comment
milind
What is number here? Will this code work? In any case the function does not do anything meaningful. What is the purpose of the argument Â&#x2018;aÂ&#x2019; here? Page 106: [2] Comment
milind
Please be accurate. If you do use the replace method but do not change the history entry, does the statement still hold good? Page 114: [3] Comment
milind
The solution to the case study does not work correctly. This needs to be taken care of.
4567897*+,-*+.-+/0
12345 674893:4 496.59.6/ =>3 =>1 =>N =>2 =>_
?@ABCDEFAGC@ HIJKFAGLKM OPQA?MRSTFBGUAV WDDG@XRSTFBGUAYCDKACQ@Z[\]^QXK RSTFBGUASQMGFM
=>= =>f =>e =>h =>g
cMG@XYC@DGAGC@QbTAQAKdK@AM ]CCUG@X[PBCEXPYCDK RSTFBGUA^BCFKDEBKM RSTFBGUAYCDG@XYC@LK@AGC@M `GFAGC@QBaHIJKFAG@RSTFBGUA
=>_>1 =>_>N =>_>2 =>_>_
RSTFBGUA`QAQ[aUKM RSTFBGUARQBGQIbKM RSTFBGUAYC@MAQ@AM RSTFBGUAHUKBQACBM
=>g>1 \KAPCDMiRSTFBGUA`GFAGC@QBaHIJKFA =>g>N RSTFBGUA`GFAGC@QBaHIJKFA^BCUKBAGKM =>13 jBBHIJKFA =>13>1 \KAPCDMiRSTFBGUAjBBHIJKFA =>13>N ^BCUKBAGKMiRSTFBGUAjBBHIJKFA
=>11 TEddQBa =>1N TCbEAGC@MkW@MlKBM =>12 mEBAPKBnKQDG@XM
5<o 3249pq1843p2
:-+/2;< 123 123 121 121 12N 12e 12g 1__ 1_f 1_h 1=2 1f2 1f2 1eN
WrAKBbKQB@G@XsQLQTFBGUAACdQtKOKI^QXKMAPQABKuEGBKMCdKbCXGFQbUBCFKMMG@XvlK lGbbDGMFEMMQ@CAPKBLKBaFCddC@MFBGUAG@XbQ@XEQXKvFQbbKDRSTFBGUA>RSTFBGUAGM \GFBCMCrAwMMFBGUAG@XbQ@XEQXK>?AK@QIbKMEMAClBGAKUBCXBQdMAPQAK@PQ@FKAPKUClKB CrOKIUQXKMIaQbbClG@XEMACFC@ABCbAPKGBIKPQLGCEB>WbAPCEXPZ[\]K@QIbKMEM ACDKLKbCUOKIUQXKMvlKFQ@@CAG@FCBUCBQAKG@ACAPKdFC@DGAGC@MCBIEMG@KMMBEbKM lGAPCEAEMG@XQ@CAPKBACCbbGtKQMFBGUAG@XbQ@XEQXK> ?@APGME@GAlKlGbbDGMFEMMAPKUBCXBQddG@XFC@MABEFAMAPQAQBKMEUUCBAKDIa RSTFBGUA>[PKFC@MABEFAMlGbbK@QIbKaCEACGdUbKdK@AQbbtG@DMCrbCXGFrCBaCEB OKIUQXKM> OKlGbbQbMCDGMFEMMQICEAHIJKFAMG@RSTFBGUAQ@DAQbtQICEAAPK`GFAGC@QBaCIJKFAG@ DKAQGbQMQ@KxQdUbK>jBBCBPQ@DbG@XGMQ@GdUCBAQ@AUQBACrQ@atG@DCrUBCXBQddG@X> ?@APGME@GAlKDGMFEMMKBBCBPQ@DbG@XG@RSTFBGUA>[PKjBBCIJKFAGMEMKDrCBAPK UEBUCMKIaRSTFBGUA
5<y p7z{8436{4
123
[PKCIJKFAGLKCrAPGME@GAGMACKxUbQG@APKIQMGFMCrRSTFBGUA>WrAKBFCdUbKAG@XAPGM E@GAvaCElGbbIKQIbKAClBGAKFCDKrCBOKIUQXKMEMG@XRSTFBGUA>|CElGbbIKQIbKAC E@DKBMAQ@DAPKrCbbClG@XFCdUC@K@AMCrRSTFBGUAi } RQBGQIbKM } ]CCUM } YC@DGAGC@QbMAQAKdK@AM } ^BCFKDEBKM } ^BCUKBAGKMQ@D\KAPCDMCr`GFAGC@QBaHIJKFA } ^BCUKBAGKMQ@D\KAPCDMCrAPKjnnHIJKFA>
)*+ ,-./031231203/4
12345678
56789:;<:=>?@?A@9BCD:89B=BC<E=5:=F>G6>=:8C>?:GHBCI@J@GB;?@K<;9BIF8<=L M<N@9?@?A@9=:K8GFI@5:=F>G6>=:8OP9BC@==:BK>G>KI7<>KI>9IQI:<:BK=R>KI5:=F>G 6>=:8CB9S;;G:8><:BK=TUN:8N:=<N@=89:;<:KVG>KVF>V@CB9D:89B=BC<QW8@GL56789:;< :=>=89:;<:KVG>KVF>V@CB9XYDZ;>V@=BK<N@[B9GI[:I@[@A>KI8B9;B9><@ :K<9>K@<=L56789:;<:=;BU@9CFG>KIN>=>G?B=<>GG<N@C@><F9@=BC5:=F>G6>=:8LMK@BC <N@<N:KV=HBF=NBFGIA@8BK8@9K@I>ABF<:=<N@=>C@<H>KI=@8F9:<HBC8G:@K<?>8N:K@= <N><>88@==HBF9[@A=:<@LD:89B=BC<<BB\<N:=8BK=:I@9><:BK:K<B>88BFK<UN@K 89@><:KV56789:;<LPB<@K<:>GGHI>KV@9BF=B;@9><:BK=<N><8>KA@IBK@:K5:=F>G6>=:8 N>J@A@@K9@?BJ@IC9B?56789:;<T:K8GFI:KV<N@8>;>A:G:<H<B>88@==IHK>?:8G:K\ G:A9>9:@=I:9@8<GH>KI<B>88@==<N@C:G@=H=<@?BK<N@8G:@K<?>8N:K@L
)*] .^^0_`1231203/1a^b/a._-/cd3.`b
eBF8>KF=@<N@7fghPY@G@?@K<<B>II56789:;<8BI@<B>KXYDZ;>V@L /ijk31203/l/mn 56789:;<8BI@:=U9:<<@KU:<N:K;>:9@Io7fghPYp<>V=LqB9@W>?;G@T>;9B8@IF9@ <B<@=<>I@G:J@9HI><@?:VN<>;;@>9>=CBGGBU=r o7fghPYZSstuStQvw56789:;<wp oxyy qFK8<:BKf>Kz@G:J@9Oz<R f>Kz@G:J@9vOfz><@Oz<RysBUORRp{ QKIqFK8<:BK yyp o|7fghPYp 6@V:KK:KV>KI@KI:KVo7fghPYp<>V==F99BFKI<N@8BI@LYN@ZSstuStQ ><<9:AF<@:KI:8><@=<N@=89:;<:KVG>KVF>V@LeBF?F=<=;@8:CH<N@G>KVF>V@A@8>F=@ A9BU=@9=8>KF=@B<N@9=89:;<:KVG>KVF>V@=T=F8N>=}>J>789:;<LsB<:8@<N><<N@ f>Kz@G:J@9CFK8<:BK:=@?A@II@I:K8B??@K<<>V=Ooxyy>KIyypRLYN:=;9@J@K<= A9BU=@9=<N><IBKB<=F;;B9<<N@o7fghPYp<>VC9B?I:=;G>H:KV<N@8BI@BK<N@ ;>V@L 7:K8@<N@@W>?;G@:=>V@K@9>GCFK8<:BKy:<:=KB<<:@I<B>KH;>9<:8FG>9CB9? 8BK<9BGyHBF8>K:K8GFI@:<:K<N@XQSz=@8<:BKBC<N@;>V@>==NBUK:Kq:VF9@ ~L A@GBUr oXYDZp oXQSzp oYhYZQpPG>8@eBF9M9I@9o|YhYZQp o7fghPYZSstuStQvw56789:;<wp oxyy qFK8<:BKf>Kz@G:J@9Oz<R f>Kz@G:J@9vOfz><@Oz<RysBUORRp{ QKIqFK8<:BK yyp o|7fghPYp o|XQSzp o6Mzep LLL
4567897*+,-*+.-+/0
1234563789:;<=>?@24A756BCD8E8F656G>HIJ5K8L123456J3MMD8NF6 ?2MDMD8OPQ156RGSTQ784MF267LG2C8U8EVB23CF@@JE2?5?@BC56MM2J3M5@@ K868E5@WJ3EJ27874EFJMF6K42R8F6MD8GSTQ784MF26F62ER8EM2A88J5@@MD842R8 M2K8MD8ELX88JF6KB23E42R8F6MD8GSTQ784MF268673E87MD5M5@@MD842R8F7E85R 56RR842R8R?8Y2E8FMF7688R8R?B56B45@@7YE2NCFMDF6MD8OPQ1784MF26L P6862M5?@88Z48JMF26M2MDF7E3@8F7MD5MB23N5BC56MM2JE2UFR8F6@F6874EFJMF6K 42R8CFMDF6Y2EN7M2E87J26RM2MD88U86M72Y2?[84M7F6B23EY2ENL\2E8Z5NJ@8V B234568N?8R74EFJMF6K42R8M2E87J26RM25?3MM264@F4AF65Y2EN577D2C6F6 \FK3E8]L3^ _G>HI` _GSTQ` _><>IS`>87MO3MM26SU86M7_a><>IS` _aGSTQ` _OPQ1` _\P;H bTHScd\2EN1d` _<b=e>>1=ScdO3MM26dbTHScdO3MM261d fTIeScd:@F4Ad` _9:;<=>\P;cdO3MM261dSfSb>cd26:@F4Ad ITbgeTgScdfO94EFJMd` H7KO2ZdO3MM26=E8778Rhd _a9:;<=>` _a\P;H` _aOPQ1` _aG>HI` >DF78Z5NJ@8CF@@RF7J@5B5?3MM2626MD8i8?=5K8LiD86B234@F4A26MD8 ?3MM26FMC23@RRF7J@5B5N8775K8?2Z7M5MF6KjO3MM26=E8778RkL H27M2YB23E42R8CF@@5JJ85EF68FMD8E4.l2Em.*597n*JE248R3E8756RCF@@?8 45@@8R26@BCD86MD842R8B23D5U8CEFMM86453787MD5MY364MF26M28Z843M8L G2C8U8EVB23456CEFM8fO94EFJM42R823M7FR8JE248R3E87V?3M7MF@@CFMDF65 9:;<=>?@24AL>DF742R8F78Z843M8R26@B2648VCD86MD8G>HIJ5K8@25R7L >DF75@@2C7B23M2F6FMF5@Fo8R5M52ERB65NF45@@B4D56K8MD8@22A2YB23Ei8? J5K8CD86FM@25R7L
pqr st4uvwxytz4wu4
>DF7784MF26CF@@RF74377MD8?57F472YfO94EFJM56RR874EF?842648JM7@FA8R5M5MBJ87V @22J756R2MD8E7L
pqrq{ st456789|-9-y}8/0
123
fO94EFJMD5726@B268R5M5MBJ845@@8R5s-67-*9LTs-67-*9F757J84F5@AF6R2Y R5M5MBJ8MD5M456426M5F6RFYY8E86MAF6R72YF6Y2EN5MF26VR8J86RF6K26D2CFMF7 378RLO845378s-67-*9F7MD826@BR5M5MBJ8F6fO94EFJMVFMF75@72MD8R5M5MBJ8 E8M3E68R?B5@@Y364MF267F6fO94EFJML TMFM77FNJ@87MV5s-67-*9456426M5F68FMD8E63N8EF42E7MEF6KF6Y2EN5MF26LT s-67-*9?8D5U8757563N?8ECD86B23378FMF6563N8EF4426M8ZM56R5757MEF6K CD86B23378FMF657MEF6K426M8ZML>D5MF7VFYB235E8C2EAF6KCFMDR5M5MD5M@22A7 @FA863N?8E7VfO94EFJM5773N87MD5MFMF7563N?8E56RR287CD5M8U8EF7N27M 5JJE2JEF5M8Y2E63N?8E7L9FNF@5E@BVFYB235E8C2EAF6KCFMDR5M5MD5M45626@B?8 7MEF6KR5M5VfO94EFJMME85M7FM577MEF6KR5M5L1234565@C5B7N5A863N?8E7 ?8D5U8577MEF6K7?B864@27F6KMD8NF6~32M5MF26N5EA7 dd L
1)56)*83+,8-7./ 01234567189:;<14=:1>9?3>86>94@?<A889B9?A69348CA1)56)*8?A4:AD1B=>671> 598694?69348AE3=66718;1?9B9?4A6=>13B4=:1>9?94B3>:A6934FG3>1HA:;<1C23= ?A47AI14=:1>9?94B3>:A693467A6>1;>181468A5A613>A69:1FJ714=815K967 3671>5A613>69:15A6AC671>18=<6981H;>18815A8A5A613>A69:1FL3=?A4A<83 7AI1A>9?7IA>91623B4=:1>9?94B3>:A6934>A4@94@B>3:033<1A4IA<=18637=@1 B<3A694@M;39464=:E1>8FN718159BB1>146?A61@3>9183B94B3>:A693467A6?A4E1 ?346A941594A1)56)*8A>1?A<<158=E62;18FO3863B67169:1C23=?A4P=86;=6671 D9453B5A6A23=KA4694A1)56)*8CA456711)56)*8E17AI1894AKA267A698:386 A;;>3;>9A61B3>6715A6A96?346A948F N71B3<<3K94@6AE<1873K86718=E62;183B5A6A67A6A1)56)*8?A4?346A94F 3+,8-7. ST78-1)56)*8 \+]]1)56)*8 2RR].)* 2-8. b*8.c.5 h+55.*4kR*c 36*c]. QR+,]. Q)8. q6T. 3856*c t,u.48 S55R5
12345678
Q./456786R* U494969A<9V15FWA<=198XB3>4=:1>9?IA>9AE<183>AV1>3M<14@6786>94@ YZZ[B3>86>94@IA>9AE<18F ^946146934A<<2?346A94843IA<955A6AF _346A94819671>N>=13>GA<81F _346A9489461@1>94671>A4@1X63`aaF _346A9489461@1>94671>A4@1Md`Cefg63d`CefeF Mi``CddeC`XdCfgaCjeeFagXg63i``CddeC`XdCfgaCjeeFagXeF _346A9489461@1>94671>A4@1M`CljeCjgdCfjg63`CljeCjgdCfjeF _346A948A894@<1M;>1?98934CB<3A694@M;39464=:E1>94671>A4@1M dFjX`g`dmdg63MlFjXl`igmMjaB3>41@A69I1IA<=18nlFjXl`igmMja63 dFjX`g`dmdgB3>;38969I1IA<=18F _346A948A53=E<1M;>1?98934CB<3A694@M;39464=:E1>94671>A4@1M lFeiefidldjgf`d`mdXg63MjFijXfafjagjl`jemMd`jB3>41@A69I1 IA<=18njFijXfafjagjl`jemMd`j63lFeiefidldjgf`d`mdXgB3> ;38969I1IA<=18F _346A948A4=:E1>67A6>1;>181468A5A61E16K114oA4=A>2lClXX63 p1?1:E1>dlCiiiiF r1;>181468A69:1E16K114XsXXsXXA45`dsaisai _346A948AIA>9AE<1M<14@6786>94@67A6?A4E1=;63A;;>3H9:A61<2` E9<<934?7A>A?61>894<14@67F _346A948A43EP1?6F _346A948A41>>3>4=:E1>F
L3=?A4=81?34I1>8934B=4?6934863?34I1>65A6AB>3:3418=E62;163A43671>F^4 A5596934C671WA>N2;1B=4?6934>16=>4894B3>:A6934AE3=673K23=>5A6A98863>15 K96794A1)56)*8F
vwxwy 123456781)56),]./
zIA>9AE<198A?34I149146;<A?173<51>67A6>1B1>863A?3:;=61>:1:3>2<3?A6934 K71>123=?A4863>1;>3@>A:94B3>:A693467A6:A2?7A4@1K79<123=>8?>9;698 >=4494@FG3>1HA:;<1C23=:9@76?>1A61AIA>9AE<1?A<<15_<9?D_3=4663863>1671 4=:E1>3B69:18A=81>?<9?D8A43EP1?634A;A>69?=<A>J1E;A@1FJ71>1671 IA>9AE<198863>1594?3:;=61>:1:3>298=49:;3>6A46FJ7A6989:;3>6A469867A6 23=34<27AI163>1B1>63AIA>9AE<1E24A:163811968IA<=13>63?7A4@1968IA<=1F ^4W0{?>9;6CIA>9AE<18A>1A<KA283B341B=45A:146A<5A6A62;1CWA>9A46F Q.4])56*c1)56),]./ L3=51?<A>1IA>9AE<181H;<9?96<29423=>8?>9;6=894@671p9:86A61:146C671|=E<9? 86A61:146CA45671|>9IA6186A61:146FG3>1HA:;<1s p9:p1@>118GA7>147196 L3=51?<A>1:=<69;<1IA>9AE<18E281;A>A694@1A?7IA>9AE<14A:1K967A?3::AF G3>1HA:;<1s
ldd
4567897*+,-*+.-+/0
123
12345678599537:;<97=2>?9 @5ABCDCEF5G;BECH;CICH2CJE;236E2B29EKJKF236EKAF2D>29FDC3;2DK5AHFBH269L 4?C92FD59>;D;HCEEKC>55G6HCB92B;J;BCAF;K5AB5AEG32FF6;EE9?;ICH2CJE; DC3;2D5D;5H35H;6ECB;F7BCAF2D>AD;M6;B9;GH;FAE9FN?;DK5AHFBH2692F HADD2D>LO5H9?C9H;CF5D79?;P6925DQM6E2B29F9C9;3;D92FCIC2ECJE;95H;RA2H; ;M6E2B29G;BECHC925D5<CEEICH2CJE;FL S-T7*+U/0967597V*0 WCH2CJE;DC3;F<5EE5N9?;F9CDGCHGHAE;F<5HDC32D>CDK9?2D>2DW8XBH269LY ICH2CJE;DC3;Z [ \AF9J;>2DN29?CDCE6?CJ;92BB?CHCB9;HL [ ]CDD59B5D9C2DCD;3J;GG;G6;H25GL [ \AF9D59;MB;;G^__B?CHCB9;HFL [ \AF9J;AD2RA;2D9?;FB56;2DN?2B?292FG;BECH;GL 45V8/-*`,7a/97T/Vab-67-cd/0 4?;FB56;5<CICH2CJE;2FG;9;H32D;GJKN?;H;K5AG;BECH;29Le?;DK5AG;BECH; CICH2CJE;N29?2DC6H5B;GAH;75DEKB5G;N29?2D9?C96H5B;GAH;BCDCBB;FF5H B?CD>;9?;ICEA;5<9?C9ICH2CJE;Lf9?CFE5BCEFB56;CDG2FBCEE;GC6H5B;GAH;gE;I;E ICH2CJE;Lf<K5AG;BECH;CICH2CJE;5A9F2G;C6H5B;GAH;7K5A3Ch;29I2F2JE;95CEE 9?;6H5B;GAH;F2DK5AHFBH269L4?2F2FCFBH269gE;I;EICH2CJE;7CDG29?CFFBH269gE;I;E FB56;L i5NE5D>CICH2CJE;;M2F9FG;<2D;F29FE2<;923;L4?;E2<;923;5<CFBH269gE;I;E ICH2CJE;;M9;DGF<H539?;923;292FG;BECH;GAD92E9?;923;9?;FBH2692F<2D2F?;G HADD2D>LY96H5B;GAH;E;I;E7CICH2CJE;;M2F9F5DEKCFE5D>CFK5ACH;2D9?; 6H5B;GAH;Le?;D9?;6H5B;GAH;;M29F79?;ICH2CJE;2FG;F9H5K;GL:5BCEICH2CJE;F CH;2G;CECF9;365HCHKF95HC>;F6CB;N?;DC6H5B;GAH;2F;M;BA92D>L@5ABCD?CI; E5BCEICH2CJE;F5<9?;FC3;DC3;2DF;I;HCEG2<<;H;D96H5B;GAH;FJ;BCAF;;CB?2F H;B5>D2j;G5DEKJK9?;6H5B;GAH;2DN?2B?292FG;BECH;GL k007+*7*+b-d./09Vb-67-cd/0 WCEA;FCH;CFF2>D;G95ICH2CJE;FBH;C92D>CD;M6H;FF25DCF<5EE5NFZ9?;ICH2CJE;2F 5D9?;E;<9F2G;5<9?;;M6H;FF25DCDG9?;ICEA;K5ANCD995CFF2>D959?;ICH2CJE; 2F5D9?;H2>?97N29?9?;lmnF2>DJ;2D>9?;CFF2>D3;D956;HC95HLO5H;MC36E;Z 8m^oo 45-d-6b-67-cd/0-*`k66-pb-67-cd/0 \5F95<9?;923;7K5AqAF9NCD995CFF2>DCF2D>E;ICEA;95CICH2CJE;K5A?CI; G;BECH;GLYICH2CJE;B5D9C2D2D>CF2D>E;ICEA;2FCFBCECHICH2CJE;LY959?;H923;F7 292FB5DI;D2;D995CFF2>D35H;9?CD5D;H;EC9;GICEA;95CF2D>E;ICH2CJE;L4?;D K5ABCDBH;C9;CICH2CJE;9?C9BCDB5D9C2DCF;H2;F5<ICEA;FL4?2F2FBCEE;GCDCHHCK ICH2CJE;LYHHCKICH2CJE;FCDGFBCECHICH2CJE;FCH;G;BECH;G2D9?;FC3;NCK7;MB;69 9?C99?;G;BECHC925D5<CDCHHCKICH2CJE;AF;F6CH;D9?;F;Frs<5EE5N2D>9?;ICH2CJE; DC3;LfD9?;<5EE5N2D>;MC36E;7CF2D>E;gG23;DF25DCHHCKB5D9C2D2D>11;E;3;D9F 2FG;BECH;GZ 123Yr1os YE9?5A>?9?;DA3J;HF?5ND2D9?;6CH;D9?;F;F2F1o7CEECHHCKF2DW8XBH269CH; B5AD9;G<H53JCF;o7F59?C99?2FCHHCKCB9ACEEKB5D9C2DF11;E;3;D9FLfDFAB?CD CHHCK79?;DA3J;H5<CHHCK;E;3;D9F2FCENCKF9?;DA3J;HF?5ND2D6CH;D9?;F;F 6EAF5D;L4?2Fh2DG5<CHHCK2FBCEE;GC<2M;GgF2j;CHHCKL
)*+,--./01,2,2*3,45*62533738302-*6253,99,:+-.0/,0.013;.02*253,99,:< =3/.00.0/,2>39*,01301.0/,2?@A1,2,4,0B3,--./0312*2533738302-*6,0 ,99,:,-6*77*C-D EF@GHIJK EF?GHLIM EFIGH?@@ <<< EF?@GHJJ N.8.7,97:A2531,2,4,0B39329.3O3169*8,0:3738302+-.0/,0.013;.02*253 P,92.4+7,9,99,:3738302:*+C,02<Q*93;,8P73D <<< N*83R,9.,B73HEFSG <<< E99,:-,930*27.8.2312*,-.0/731.830-.*0<)*+4,05,O3,-8,0:,-K@ 1.830-.*0-A,725*+/58*-2P3*P734,00*24*8P9353018*9325,025933*96*+9 1.830-.*0-<T+72.P731.830-.*0-,931347,931B:-3P,9,2.0/,0,99,:U--.>3 0+8B39-.0253P,930253-3-C.254*88,-<V02536*77*C.0/3;,8P73A253T:W,B73 O,9.,B73.-,2C*X1.830-.*0,7,99,:4*0-.-2.0/*6K9*C-,01??4*7+80-D Y.8T:W,B73FJA?@G V0,2C*X1.830-.*0,7,99,:A2536.9-20+8B39.-,7C,:-2530+8B39*69*C-Z 253-34*010+8B39.-2530+8B39*64*7+80-< )*+4,0,7-*1347,93,0,99,:C5*-3-.>345,0/3-C5.73:*+9-49.P2.-9+00.0/< W5.-.-4,7731,1:0,8.4,99,:<W53,99,:.-.0.2.,77:1347,931C.25.0,P9*431+93 +-.0/3.2539253[6\ -2,238302*9+-.0/253]3Y.8-2,238302<^*C3O39A6*9, 1:0,8.4,99,:A0*-.>3*90+8B39*61.830-.*0-.-P7,431.0-.13253P,930253-3-< Q*93;,8P73D Y.8T:E99,:FG ]3Y.8E0*2539E99,:FG W*+-3,1:0,8.4,99,:A:*+8+-2-+B-3_+3027:+-3`a[6\ 2*132398.03253 0+8B39*61.830-.*0-,01253-.>3*63,451.830-.*0<V02536*77*C.0/3;,8P73A `a[6\ -32-253.0.2.,7-.>3*62531:0,8.4,99,:2*IJ<E-+B-3_+302`a[6\ -2,23830293-.>3-253,99,:2*L@AB+2+-3-253b5aca5dae3:C*912*P93-39O3253 4*02302-*6253,99,:,-25393-.>.0/2,e3-P7,43< ]3Y.8T:E99,:FIJG <<< ]3Y.8f93-39O3T:E99,:FL@G W5393.-0*7.8.22*2530+8B39*62.83-:*+4,093-.>3,1:0,8.4,99,:AB+2 :*+-5*+71e0*C25,2.6:*+8,e3,0,99,:-8,773925,0.2C,-A:*+7*-3253 1,2,.025337.8.0,2313738302-<
12345678
ghihj 12345678klmc8nm8c
E4*0-2,02.-,83,0.0/6+70,8325,22,e3-253P7,43*6,0+8B39*9-29.0/,01 03O3945,0/3-<R=N49.P2136.03-,0+8B39*6.029.0-.44*0-2,02-<)*+4,0/32 132,.731.06*98,2.*0,B*+2253-3.029.0-.44*0-2,02-69*8253R=N49.P2o,0/+,/3 ]36393043< ?LJ
4567897*+,-*+.-+/0
16/-97*+12*09-*90 3456789:85;87<=8>?@8=64@;:9@:;?@ABC67?D:5;?@E:F8G4@;:;:9:8H8@:IJF?; K8:;L456789:8;:7?@E47@5H87?664@;:9@:;M?:FH89@?@E>5K@9H8;9@=9KK4M;L45 :49;;?E@:F8HK?:879KN9K58;IO478P9HDK8Q G4@;:RLC:7?@ESTJF?;?;HL;:7?@EIT G4@;:RLUE8SVW X4:8:F9::F8;:7?@EK?:879K?;8@6K4;8=?@Y54:9:?4@H97Z;[TT\I]54:9:?4@H97Z; 978:F8H4;:4^N?45;M9L:4=?>>878@:?9:8;:7?@EN9K58;>74H@5H87?6N9K58;I_9:8 K?:879K;9@=:?H8K?:879K;97878D78;8@:8=^L8@6K4;?@E:F8H?@@5H^87;?E@;[`\I O478P9HDK8Q G4@;:G5:4>>_9:8S`3<1<Wa` 345H9LM9@::49=4D:9@9H?@E;6F8H8:4=?>>878@:?9:864@;:9@:;>74HN97?9^K8;I JF?;M?KK;9N8L45>74H:7L?@E:4789;;?E@64@;:9@:N9K58;MF?K8L457;67?D:?; 75@@?@EIO478P9HDK8bL45H?EF:M9@::45;89TN^T47T64@TD78>?P4@L457 64@;:9@:@9H8;b47L45H?EF:@9H8L45764@;:9@:;?@9KK69D?:9KK8::87;I _?>>878@:?9:?@E64@;:9@:;>74HN97?9^K8;8K?H?@9:8;64@>5;?4@9;L45=8N8K4D H47864HDK8P;67?D:;I
cdede fg456789h8/6-9260
ABC67?D:F9;9>5KK79@E84>4D879:47;b?@6K5=?@E97?:FH8:?64D879:47;b64HD97?;4@ 4D879:47;b64@69:8@9:?4@4D879:47;b9@=K4E?69K4D879:47;I h8/6-926i6/5/j/*5/ kF8@;8N879K4D879:?4@;46657?@9@8PD78;;?4@b896FD97:?;8N9K59:8=9@= 78;4KN8=?@9D78=8:87H?@8=47=8769KK8=4D879:47D7868=8@68I34569@5;8 D978@:F8;8;:44N877?=8:F847=874>D7868=8@689@=>4768;4H8D97:;4>9@ 8PD78;;?4@:4^88N9K59:8=^8>4784:F87;IlD879:?4@;M?:F?@D978@:F8;8;978 9KM9L;D87>47H8=^8>478:F4;845:;?=8Ik?:F?@D978@:F8;8;bF4M8N87b;:9@=97= 4D879:47D7868=8@68?;H9?@:9?@8=I kF8@8PD78;;?4@;64@:9?@4D879:47;>74HH478:F9@4@869:8E47Lb97?:FH8:?6 4D879:47;9788N9K59:8=>?7;:b64HD97?;4@4D879:47;9788N9K59:8=@8P:b9@=K4E?69K 4D879:47;9788N9K59:8=K9;:IG4HD97?;4@4D879:47;9KKF9N88Y59KD7868=8@68m:F9: ?;b:F8L9788N9K59:8=?@:F8K8>:<:4<7?EF:47=87?@MF?6F:F8L9DD897IU7?:FH8:?6 9@=K4E?69K4D879:47;9788N9K59:8=?@:F8>4KK4M?@E47=874>D7868=8@68I
123
ndo679pq/97528/6-9260 rd12q8-6702*28/6-9260 sd,2+75-t28/6-9260 u/05678972* 4vqw2tu/05678972* 4vqw2tu/05678972* 4vqw2t xPD4@8@:?9:?4@ y xY59K?:L S z4E?69K@8E9:?4@ X4: E?69K {@97L@8E9:?4@ < |@8Y59K?:L }~ z4 64@ 5@6:?4@ U@= E?69K R5K:?DK?69:?4@ z8;;:F9@ } z4 =?; 5@6:?4@ l7 _?N?;?4@ 789:87:F9@ ~ z4E?69K8P6K5;?4@ 47 E?69K |@:8E87=?N?;?4@ z8;;:F9@478Y59K:4 }S z4 8Y5?N9K8@68 xYN R4=5K5; 89:87:F9@478Y59K ~S z4E?69K R4= 7 97?:FH8:?6 :4 ?HDK?69:?4@ |HD U==?:?4@ l^ 86:8Y5?N9K8@68 |; C5^:796:?4@ < C:7?@E 64@69:8@9:?4@
)*+,--./0,102013.41*+.5+6,1.6-0-7+411.608*19:*+;<=710570/,10.;,;>>020-0.; .//=61.8+1*+60;,;+?56+--0.;@+,/*.5+6,10.;0-+2,7=,1+>,-01.//=6-46.<7+41 1.608*19A0B+C0-+@C*+;,>>010.;,;>-=D16,/10.;.//=61.8+1*+60;,;+?56+--0.;@ +,/*.5+6,10.;0-+2,7=,1+>0;.6>+6.4,55+,6,;/+46.<7+411.608*19 )*+-160;8/.;/,1+;,10.;EFG.5+6,1.60-;.1,;,601*<+10/.5+6,1.6@D=10; 56+/+>+;/+014,77-,41+6,77,601*<+10/.5+6,1.6-,;>D+4.6+,77/.<5,60-.; .5+6,1.6-9)*+HI.5+6,1.60-,;.DJ+/16+4+6+;/+/.<5,60-.;.5+6,1.69K1>.+-;.1 /.<5,6+.DJ+/1-.61*+062,7=+-L01/*+/B-.;731.>+1+6<0;+041C..DJ+/1 6+4+6+;/+-6+4+61.1*+-,<+.DJ+/19
12345678
MNM O3HPQRSPTHUHSPVW3UVUXYXPU3
Z.=/,;/.;16.71*+47.C.43.=6-/6051C01*/.;>010.;,7-1,1+<+;1-,;>7..50;8 -1,1+<+;1-9[-0;8/.;>010.;,7-1,1+<+;1-@3.=/,;C601+\]^/6051/.>+1*,1<,B+>+/0-0.;-,;>6+5+,1-,/10.;-9)*+4.77.C0;8/.;>010.;,7-1,1+<+;1-,6+,2,07,D7+ 0;\]^/6051_ K4999)*+;999`7-+-1,1+<+;1 ^+7+/1a,-+-1,1+<+;1 Ybc6deTf46I6gdIOI6deHhNNNUifdNNNXjIf )*+HhNNNUifdNNNXjIf-1,1+<+;10-=-+>1.+2,7=,1+C*+1*+6,/.;>010.;0-U5kf.6 lbjIf,;>@>+5+;>0;8.;1*+6+-=71@1.-5+/043.;+.6<.6+-1,1+<+;1-1.+?+/=1+9 [-=,7731*+/.;>010.;0-,;+?56+--0.;1*,1=-+-,/.<5,60-.;.5+6,1.61./.<5,6+ .;+2,7=+.62,60,D7+C01*,;.1*+69m.60;4.6<,10.;,D.=1/.<5,60-.;.5+6,1.6-@ -++a.<5,60-.;n5+6,1.6-9HhNNNUifdNNNXjIf-1,1+<+;1-/,;D+;+-1+>1.,-<,;3 7+2+7-,-3.=;++>9 okdd6de38b8fpfd8I6hbRgdq686gd6IU5kf ).6=;.;73.;+-1,1+<+;1C*+;,/.;>010.;0-U5kf@=-+1*+-0;87+r70;+-3;1,?4.6 1*+HhNNNUifdNNNXjIf-1,1+<+;19)*+4.77.C0;8+?,<57+-*.C-1*+-0;87+r70;+ -3;1,?9s.10/+1*,11*0-+?,<57+.<01-1*+XjIfB+3C.6>9 ^=Dm0?t,1+EG t0<<3t,1+ <3t,1+uvwxyzx{|v K4<3t,1+}s.C)*+;<3t,1+us.C `;>^=D ).6=;<.6+1*,;.;+70;+.4/.>+@3.=<=-1=-+1*+<=71057+r70;+E.6D7./BG -3;1,?9)*0--3;1,?0;/7=>+-1*+XdqHh-1,1+<+;1@,--*.C;0;1*+4.77.C0;8 +?,<57+_ ^=D~7+61[-+6E2,7=+G K42,7=+u )*+; ~7+61A,D+79m.6+a.7.6u2D +> ~7+61A,D+79m.;19].7>u)6=+ ~7+61A,D+79m.;19K1,70/u)6=+ `;>K4 `;>^=D yz
4567897*+,-*+.-+/0
1.**7*+2/69-7*49-9/3/*9074-25*67975*7076./-*61.**7*+899/60 74-25*67975*70:-;0/ <=>?@A>BC@AD4EEE79/*EEEF;0/BG@GCHCAGG=ICJKACGL=MN=?OB=JCPC?>G@MNC BG@GCHCAGBQ=ACMN=?OG=R>AKJGSC?=AIKGK=AKB76./TGSC=GSCRMN=?OG=R>AKJ GSC?=AIKGK=AKB:-;0/U V>MWNCRGXBCRYZ@N>C[ \JZ@N>C]^_SCA WNCRG`@MCNUa=RCb=N=R]ZMcCI WNCRG`@MCNUa=AGUd=NI]_R>C WNCRG`@MCNUa=AGU\G@NK?]_R>C eNBC WNCRG`@MCNUa=RC?=N=R]ZMdN@?O WNCRG`@MCNUa=AGUd=NI]a@NBC WNCRG`@MCNUa=AGU\G@NK?]a@NBC eAI\J eAIV>M _SCJ=NN=LKAfJN=L?S@RGCPgN@KABGSCJN=L=JGSC@M=ZCCP@HgNCU VG@RG <CB WNCRG`@MCNUa=RCb=N=R]ZMcCI WNCRG`@MCNUa=AGUd=NI]_R>C WNCRG`@MCNUa=AGU\G@NK?]_R>C
\BZ@N>C]^
h=
WNCRG`@MCNUa=RCb=N=R]ZMdN@?O WNCRG`@MCNUa=AGUd=NI]a@NBC WNCRG`@MCNUa=AGU\G@NK?]a@NBC
VG=g
i/5767*+j/9k//*4/l/6-;m;9/6*-97l/0 WZ@RK@GK=A=AGSCD4EEE79/*EEEF;0/BG@GCHCAG@NN=LBn=>G=?S==BCJR=H BCZCR@N@NGCRA@GKZCBUWIIKAfF;0/D4?N@>BCBCPg@AIBGSCJ>A?GK=A@NKGn=JGSC D4EEE79/*EEEF;0/BG@GCHCAGB=GS@Gn=>?@A?=AGR=NgR=fR@HJN=LM@BCI=A IKJJCRCAGg=BBKMKNKGKCBUa=RCP@HgNCQ
123
V>McCg=RGo@N>CYZ@N>C[ \JZ@N>C]^_SCA pBfd=PZ@N>C eNBC\JZ@N>C]1_SCA pBfd=PZ@N>C eNBC\JZ@N>C]qGSCA pBfM=PZ@N>C
)*+, -+./01234*5,05607849.,:2 )9;<7
12345678
=05>494;;4+?49@ABCDEF>*45+,+4+@059,,;60G80HI;,4*6,8946IH,>J0I>,+K )16,9+IH,5+,076J,ABCDEF>*45+,+076,9/,>0?,+>5?/,8+0?,KL/,66,8M4@60 >J00+,/,6M,,9+,H,84*4*6,8946IH,+I+6J,3DBD48NOCD+646,?,96K POQ6RSTD46C6URCV68W3DBD48NOCD XJ,3DBD48NOCD+685>658,G80HI;,+494*6,8946IH,60EFYYYZWDRYYYABCDEF708 +,*,>6IH,*@,1,>56I9.09,/*0>[07+646,?,96+780?4?09.?5*6IG*,/*0>[+07 +646,?,96+KL3DBD48NOCD+646,?,96G80HI;,+>4G4/I*I6@+I?I*48606J, EFYYYZWDRYYYABCDC8O8D\DR8]/56I6?4[,+>0;,?08,,77I>I,9649;8,4;4/*,K L3DBD48NOCD+685>658,M08[+MI6J4+I9.*,6,+6,1G8,++I096J46I+,H4*546,;09>,] 466J,60G076J,+685>658,KXJ,8,+5*6076J,,1G8,++I09I+6J,9>0?G48,;MI6J6J, H4*5,+708,4>JNOCDI96J,+685>658,K<76J,8,I+4?46>J]6J,/*0>[07+646,?,96+ 4++0>I46,;MI6J6J46NOCDI+,1,>56,;^ _,*,>6`4+,a0>5?,96Kb08?cK`48;X@G,KdG6I09+e_,*,>6,;<9;,1fKX,16 `4+,2-4+6,8`48;2 aI+G*4@-`g0.0 34*I;46,-`L>>0596 `4+,23I+42 aI+G*4@3I+4g0.0 34*I;46,3I+4L>>0596 `4+,2L?,8I>49)1G8,++2 aI+G*4@L-)h`dg0.0 34*I;46,L-)h`dL>>0596 `4+,)*+, aI+G*4@i9[90M9<?4., j80?G6L.4I9 )9;_,*,>6 k06I>,6J466J,3DBD48NOCD+685>658,,H4*546,+49,1G8,++I0909>,466J,60G076J, +685>658,K<9>09684+6]6J,EFYYYZWDRYYYABCDEF+685>658,>49,H4*546,4;I77,8,96 ,1G8,++I09708,4>JABCDEF+646,?,96K=05>498,G*4>,49EFYYYZWDRYYYABCDEF +685>658,MI6J43DBD48NOCD+685>658,09*@I7,4>JABCDEF+646,?,96,H4*546,+6J, +4?,,1G8,++I09K
lYm noopEqrZstoursNoTA
uC6RSnUU7C8UtD7DO8NUvD g00GI9.4**0M+@05608594.805G07+646,?,96+8,G,46,;*@K_0?,*00G+8,G,46 +646,?,96+596I*4>09;I6I09I+wOBCDx06J,8+8,G,46+646,?,96+596I*4>09;I6I09I+ Z5yDKXJ,8,48,4*+0*00G+6J468,G,46+646,?,96+4+G,>I7I>95?/,8076I?,+K XJ,70**0MI9.*00GI9.+646,?,96+48,4H4I*4/*,I93z_>8IG6^ a0KKKg00G^g00G+MJI*,08596I*4>09;I6I09I+Z5yDK {JI*,KKK{,9;^g00G+MJI*,4>09;I6I09I+Z5yDK b08KKKk,16^i+,+4>0596,860859+646,?,96+4+G,>I7I,;95?/,8076I?,+K b08)4>JKKKk,16^~,G,46+4.805G07+646,?,96+708,4>JI6,?I94>0**,>6I0908
c|}
4567897*+,-*+.-+/0
123415161789:272;;2<= >07*+?@,@@80 A9B327BC1?@DDD,@@8C82816178C89;B72E593F9:C82816178C27G7H1:G7G81 7B6E1;9:8G61C=I41C82816178C2;1;1J1281H1G841;K4G512397HG8G97GCL6./9; B78G52397HG8G97E13961CL6./= M/8/-97*+49-9/N/*90OP7Q/-R@*S797@*70L6./ TC1841OP7Q/F1<K9;H893413F2397HG8G97G72?@DDD,@@8C82816178=A9B327 3413F841397HG8G97E1:9;1<9B1781;841599JU2CC49K7G7841:9559KG7V W4FXG;C8Y4G511Z26J51[\9;<9B3273413FG82:81;841599J42C;B728512C89731 U2CC49K7G7841W4F]2C8Y4G511Z26J51[=^7841W4FXG;C8Y4G51J;931HB;1\G: 6<_B6GCC1889`G7C812H9:a3\841C82816178CG7CGH1841599JKG5571b1;;B7=^7 841W4F]2C8Y4G51J;931HB;1\841C82816178CG7CGH1841599J;B7975<9731E132BC1 841397HG8G97GC25;12H<c-Q0/= dBEW4FXG;C8Y4G51U[ eG639B781;\6<_B6 39B781;f3 6<_B6fa3 e9Y4G516<_B6g13 6<_B6f6<_B6h1 39B781;f39B781;i1 ]99J jCVk9ZlI41599J62H1lm39B781;ml;1J18G8G97C=l n7HdBE dBEW4F]2C8Y4G51U[ eG639B781;\6<_B6 39B781;f3 6<_B6f` e9 6<_B6f6<_B6h1 39B781;f39B781;i1 ]99JY4G516<_B6g13 jCVk9ZlI41599J62H1lm39B781;ml;1J18G8G97C=l n7HdBE I412E9b1:GVB;1C49KC8K91Z26J5139H1:;2V6178CG55BC8;28G7V841H9o 599J27HH9K4G51o 599JC82816178C=^7841:G;C8599J841397HG8G97GC 3413F1HE1:9;11Z13B8G7V84139H1EB8G7841C1397H599J841C82816178C2;1 :G;C81Z13B81H973127H8417841397HG8G97GC3413F1H=^7841:G;C8599J841 G7C8;B38G97CVGb17G7841599JpCE9H<KG5571b1;E11Z13B81HG:841397HG8G97 :2G5CG7G8G255<EB8G7841C1397H599J841C1G7C8;B38G97CK9B5HE11Z13B81H28 512C89731=I41:9559KG7V:59K342;8C49KC8411Z13B8G97J5279:841C1397H J;931HB;1G=1=W413F]2C8Y4G51q
123
12345678
)*+,* 2<>*>+?>@.34053*1A+<=:15<*.,*18 9.:,.+/.34053;47+<=2<:,.+/.:15<*.,;47 2/34053678 01 9>/B?+4*C.D+?5.1E:15<*.,
-./
)*1B F6GH5IJKLMNOI4H86PQRSTQPU8VI3I4PQWXPP76QF6GH5IJKY
ZI7IT86QGT38T8I[IQ8\Q86ST]PQW686PQ2I4P[I^_5HI -15:+<5/.*C.\Q86S`.4a1,=><*a1a+4/*1:C.:`+:1<=>*>1<><+ bPKKKXPP7/*+*.3.<*c-15:+<:C.:`*C.:1<=>*>1<;.E1,.415.<*.,*C.?11B d+//C1a<><*C.E1??1a><efC`g>,/*h<*>?.i+3B?.jk1,415:+<:C.:`>*+E*., *C.?11BC+/,5<+*?.+/*1<:.d+//C1a<><*C.fC`l+/*h<*>?.i+3B?.jcm/ ?1<e+/*C.:1<=>*>1<>/FTS^Ik*C.?11B:1<*><5./c )5;fC`g>,/*h<*>?dj 9>3:15<*.,k34053 :15<*.,n8 34053no8 91h<*>?34053n78 34053n34053p7 :15<*.,n:15<*.,q7 l11B r/es1ituC.?11B3+=.tv:15<*.,vt,.B.*>*>1</ct w<=)5; )5;fC`l+/*h<*>?dj 9>3:15<*.,k34053 :15<*.,n8 34053n7 91 34053n34053q7 :15<*.,n:15<*.,q7 l11Bh<*>?34053n78 r/es1ituC.?11B3+=.tv:15<*.,vt,.B.*>*>1</ct w<=)5; NO686QGTbPKKKXPP738T8I[IQ8U5P[ xQ^6WI8VIXPP7 -15:+<.i>*+bPKKKXPP7;45/><e*C.NO68bP/*+*.3.<*cs.:+5/.4155/5+??4 a+<**1.i>*1<?4><:.,*+></>*5+*>1</k/5:C+/*1+D1>=+<.<=?.//?11Bk415
7y7
4567897*+,-*+.-+/0
1234564178279:79;<18=87>7?8@?827A6./18=87>7?8B53CD3E=? FGHHHAI/*HHH9J0/18=87>7?8KLE827C3?6@8@3?@1M-J0/N827533OP4?1=1414=5K Q827PR@17NS34OP3B=B5S6@6?38?776=533O@?827E@P18O5=C7K L?827E3553R@?T7U=>O57N>SV4>@1=11@T?76=W=54782=8CP7=871=?7?65711533OK X27FGHHHAI/*HHH9J0/18=87>7?8C27CD1E3P82@1C3?6@8@3?NOP7W7?8@?T8277?65711 P7O78@8@3?K Y4BZU@8ZU=>O57[\ ]@>C34?87PN>SV4> C34?87P^_ >SV4>^` ]3a?8@5>SV4>^1_ >SV4>^>SV4>b1 C34?87P^C34?87Pc1 LE>SV4>d1_X27?ZU@8]3 e33O f1Tg3UhX27533O>=67hiC34?87PihP7O78@8@3?1Kh Z?6Y4B j07*+kI7J/HHHk/*l X27kI7J/HHHk/*l18=87>7?8@1OP3W@676@?mgYCP@O8E3P82317R23=P7 E=>@5@=PR@82@8141=T7Kn3R7W7PNB7C=4173E8275=CD3EE57U@B@5@8S@? kI7J/HHHk/*lN@8@1P7C3>>7?67682=8S34417;<HHH,<<8@?187=6K j07*+M<6HHHo/:9 p34C=?417M<6HHHo/:918=87>7?8183P4?=B53CD3E18=87>7?81=1O7C@E@C ?4>B7P3E8@>71Kq3P533O1N417=C34?87PW=P@=B57R2317W=547@1@?CP7=1763P 67CP7=176R@827=C2P7O78@8@3?3E827533OK q3P7U=>O57N827E3553R@?TOP3C764P7C=4171=OP3C764P7C=5576fSrP3C83 7U7C487s_8@>71KX27M<618=87>7?81O7C@E@71827C34?87PW=P@=B57U=?6@81 18=P8=?67?6W=5471KX27o/:918=87>7?8@?CP7>7?81827C34?87PW=P@=B57BS1K Y4B]3fSrP3Cs_X@>71[\ ]@>U q3PU^1X3s_ fSrP3C V7U8 Z?6Y4B a1@?T82749/8D7SR3P6NS34C=?@?CP7=173P67CP7=17827C34?87PW=P@=B57BS827 W=547S341O7C@ESKL?827E3553R@?T7U=>O57N827C34?87PW=P@=B57t@1@?CP7>7?876 BS37=C28@>7827533OP7O7=81Ku27?827533O@1E@?@1276N838=5@182714>3E3N2N vNwN=?61_K
123
Y4BXR31X38=5[\ ]@>tN838=5 q3Pt^3X31_Y87O3 838=5^838=5ct V7U8 f1Tg3UhX27838=5@1hi838=5
)*+,-.
12345678
/0+123145167120-*61384394.:1;<0--514*1=4698138>784:-1?@0-A-565B129C< 4*1*+84:-1674695:155674*6715643684:-1?D*671C0::0E9*=1F4AB:1;67120-*613 84394.:1A<G-A95+1231451+.<H142769A1671:00B31B1465?I71*671:00B95 C9*9571+;6064:956715-A0CJK;JL;JH;JM;N;K;L;4*+H? ,-.G1E/064:OP Q9AA<G-A;6064: R03A<G-ASJK/0H,61BTH 6064:S6064:UA<G-A G1F6 V5=W0FX/716064:95XY6064: )*+,-. @0-24*1F964*<Z[5\\\]>^856461A1*6.1C03167120-*61331427159651*+84:-1.< -59*=671_^68Z[556461A1*6?W124-51<0--5-4::<E4*6601F960*:<9*213649* 596-4690*5;5-2745E71*4*13303022-35;<0-570-:+-51671_^68Z[556461A1*69* 671`5a>56461A1*6.:02b0C4*cd\\\`e>f\\\_gh>56461A1*6?DC67120*+9690*95 Zigh>;671:00B3-*545-5-4:?j6713E951<0-B30.4.:<+9+*06*11+60-51671 :00B9*671C9356B:421? kh6flZ[5_i4e\\\]>^8 mZ[5_i4e\\\]>^8:00B9559A9:43604Z[5\\\]>^8:00B?D*5614+0C31B1469*=671 56461A1*6545B129C91+*-A.130C69A15;4Z[5_i4e\\\]>^8:00B31B14654=30-B0C 56461A1*65C031427961A9*420::12690*0C0.n126503C0314271:1A1*60C4*4334<? /7959515B1294::<71:BC-:9C<0-+0*06b*0E70EA4*<1:1A1*65431B3151*69*4 20::12690*? D*671C0::0E9*=o/Vp20+11F4AB:1;67120*61*650C4q6486[fi5r0.n126431 -51+60B:42161F69*518134:61F6.0F15s to/Vpu to)mQut/D/p)uR03A54*+):1A1*65tv/D/p)utvo)mQu t,wxDy/pmGz{mz)SX|W,239B6Xu t TT ,-.2A+w74*=1 j*w:92b Q9A+ w31461484394.:1 ,16+Sw31461j.n126OX,239B69*=?Q92690*43<XP +?m++XMX;Xm671*5X m++50A1b1<54*+961A5 +?m++XJX;XW1:=34+1X +?m++XHX;Xw4930X 4S+?961A5 R039SM/0+?w0-*6 +02-A1*6?C3AR03A?):1A1*65O9P?|4:-1S4O9P G1F6 )*+,-. TTu tv,wxDy/u tWjQ@u
}~ /79520+11F4AB:1+015 Gj/9::-563461671R03)427 G1F6:00B? DC67120-*60C+24*.1+1613A9*1+;671* 0*1*11+*06.1-59*=6795:00B4*+671 R03 G1F6:00BE9::+0?y:1451=9814 .166131F4AB:1?m64A9*9A-A;E39616795 1F4AB:160A4b1-510C671R03 )427 G1F6:00B?
JL
34567869*+,9*-,*./
01234256 07859 3:92;<=>?7@>?<60A6 0BCADE4FAG;<4GHE<60A6 0BCADE4FAG;<4GHE<60A6 0BCADE4FAG;<4GHE<60A6 0BCADE4FAG;<IDEE@C<3:92;<J?K1LMCNG<O:PQ2;<1RSJT UG>G<60A6 0V78596 0V1234256 0VI8WX6 0VU49P6
YZ.4[\]-5^5]*5.//_
1` a>SEGJ@KGE@JLGJTbLGELG>MCD?cG>SdGeGCMCKA>S?G@>@KKMCKA>S?G` f` a>SEGJ@KGSCOIgJ>SAEE@NGCG>MEGELG7Sc@CCMJJSdG>SGd`4LSdN@Gd1h1hfhih jhkhl MCKd@@C`7>@?ELGELS>KCD?cG>@CbM>KdhELGCELCD?cG>SdELGdD? @=ELGmCn1oELMCKELGmCnfoELCD?cG>d` i` a>SEGJ@KGE@=SCKELG=MJE@>SMR@=MCFNSeGCCD?cG>`4LSdSdELGA>@KDJE@=MRR CD?cG>d=>@?fE@ELMECD?cG>`
pqr st3Yuv^w^uxYyz{uy3
BCOIgJ>SAEELG>GM>GEb@TSCKd@=A>@JGKD>Gd|ELGgDcA>@JGKD>GMCKELG 7DCJES@CA>@JGKD>G` 3-}^5]4.~-5./ :3-}A>@JGKD>GSdMdG>SGd@=OIgJ>SAEdEMEG?GCEdhGCJR@dGKcF3-}MCKy9~ 3-}dEMEG?GCEdhELMEAG>=@>?MJES@CdcDEK@C E>GED>CMeMRDG`:3-}A>@JGKD>G JMCEMTGM>ND?GCEdmJ@CdEMCEdheM>SMcRGdh@>GHA>GddS@CdELMEM>GAMddGKcFM JMRRSCNA>@JGKD>Go`B=M3-}A>@JGKD>GLMdC@M>ND?GCEdhSEd3-}dEMEG?GCE?DdE SCJRDKGMCG?AEFdGE@=AM>GCELGdGdmo` 7SND>Gj`1 dL@bdM3-}A>@JGKD>GDdGdEb@SCE>SCdSJh@>cDSRE SChOIgJ>SAE =DCJES@Cdh9dNI@HMCKBCADEI@HhE@A>@?AEMDdG>=@>d@?GSC=@>?MES@C`BEELGC KSdARMFdELG>GdDREd@=MJMRJDRMES@CcMdGK@CELMESC=@>?MES@C`4LGJMRJDRMES@CSd AG>=@>?GKSCM -9486]9A>@JGKD>GJ>GMEGKDdSCNOIgJ>SAE`4LG -9486]9 A>@JGKD>GSddL@bCM=EG>ELG=@RR@bSCNKSdJDddS@C` gDc1@CeG>E4G?Amo EG?A;BCADEI@Hm< RGMdGGCEG>ELGEG?AG>MED>GSCKGN>GGd7`<h1o 9dNI@H<4LGEG?AG>MED>GSd< 1GRdSDdmEG?Ao <KGN>GGd1`< 2CKgDc
122
-9486]9^5]4.~-5./ : -9486]9A>@JGKD>GSdMdG>SGd@=OIgJ>SAEdEMEG?GCEdGCJR@dGKcFELG -9486]9MCKy9~ -9486]9dEMEG?GCEd`: -9486]9A>@JGKD>GSddS?SRM>E@M 3-}A>@JGKD>GhcDEJMCMRd@>GED>CMeMRDG`: -9486]9A>@JGKD>GJMCEMTG M>ND?GCEdmJ@CdEMCEdheM>SMcRGdh@>GHA>GddS@CdELMEM>GAMddGKE@SEcFMJMRRSCN A>@JGKD>Go`B=M -9486]9A>@JGKD>GLMdC@M>ND?GCEdhSEd -9486]9dEMEG?GCE ?DdESCJRDKGMCG?AEFdGE@=AM>GCELGdGdmo`: -9486]9>GED>CdMeMRDGcF
)**+,-+-,).)/0123+2*-)41+-3-1354351*2)2141-2*3627185391:051;<71 51205-2=8136)>?@486A@+*)/B)=*)1C56C@8; D-27163//3B+-,1E)48/1F271G1/*+0*60-92+3-9)/90/)21*:1,511*G1/*+0*6534 :1,511*H)751-71+2;I71-27160-92+3-+*9)//1:6534271G3-.152<1483?J 85391:051F).)5+)K/193-2)+-+-,271)5,041-2.)/01+*8)**1:2327160-92+3-;<71 51*0/2362719)/90/)2+3-+*51205-1:232719)//+-,85391:051)-::+*8/)=1:+-) 41**),1K3E; L0KG3-.152<148MN 2148OD-802P3EMQR/1)*11-215271214815)2051+-:1,511*H;QFSN T*,P3EQ<71214815)2051+*QUG1/*+0*M2148NUQ:1,511*G;Q V-:L0K H0-92+3-G1/*+0*M6W1,511*N G1/*+0*OM6W1,511*XYZN[\]^ V-:H0-92+3_`886@abC8C6@8AC@cA?8Ade5A4`c?5`f V)978+19136:)2)+*8)**1:+-23=30585391:051*0*+-,)-)5,041-2;g5,041-2* *15.1)*8/)9173/:15*635271:)2)=30B)-2238)**+-23=30585391:051;h309)-)41=305)5,041-2*B+27)-=.)/+:.)5+)K/1-)41;I71-=30951)21)85391:051 0*+-,1+27152713?J*2)2141-235271>?@486A@*2)2141-2F8)51-271*1*40*2K1 +-9/0:1:)6215271-)413627185391:051;g-=)5,041-2*)518/)91:+-*+:1271*1 8)51-271*1*F*18)5)21:K=9344)*;H351E)48/1F+-27163//3B+-,1E)48/1F 6W1,511*+*)8/)9173/:15635271.)/01K1+-,8)**1:+-23271G1/*+0*60-92+3-635 93-.15*+3-i H0-92+3-G1/*+0*M6W1,511*N G1/*+0*OM6W1,511*XYZN[\]^ V-:H0-92+3<3,12:)2)30236)85391:051F=3040*20*1)>?@486A@;j1414K15F)>?@486A@ 85391:0519)-51205-).)/01k)3?J85391:0519)--32; lf6@a3?JC@c>?@486A@e5A4`c?5`f6@mAc` g>?@486A@+-=30593:140*2)/B)=*K10*1:3-2715+,72*+:136).)5+)K/1 )**+,-41-235+-)-1E851**+3-;H351E)48/1i <148OG1/*+0*M6W1,511*N 35 T*,P3EQ<71G1/*+0*214815)2051+*QUG1/*+0*M6W1,511*NUQ:1,511*;Q <39)//)3?J85391:0516534)-3271585391:051F=309)-n0*22=81271-)4136 27185391:051)/3-,B+27.)/01*635)-=51o0+51:)5,041-2*F1)97*18)5)21:K=) 9344);<71G)//*2)2141-2+*-3251o0+51:FK02+6=30:30*1+2F=3040*21-9/3*1 )-=)5,041-2*+-8)51-271*1*; <7163//3B+-,1E)48/1*73B*2B39)//*23271T=R53985391:051;p-10*1*271 mCqq*2)2141-2+-27193:1k27132715:31*-32;P327:31E)92/=271*)4127+-,; G)//T=R539M6+5*2)5,F*193-:)5,N T=R5396+5*2)5,F*193-:)5, r32+9127)22718)51-271*1*)5134+221:+-2719)//B71-271mCqq*2)2141-2+*-s2 0*1:;
12345678
St\
4567897*+,-*+.-+/0
123 4546789:6;<8=>6;=4?=:8;=4
@ABCDEFADGHDICADJKLHJMEEHJICADJINKIOKPNHQRPAMSLCIHFABHMJCDETCFLAJAUI VCJMKQWKJCFXFLCRICDEYBCICADZ@ABCDEFADGHDICADJFKDCDFQMBHINHUAQQASCDE[ \KOCDEFADGHDICADJUALA]^HFIJ_GKLCK]QHJ_KDBRLAFHBMLHJ @AOOHDICDEFADGHDICADJ `HaIUALOKIICDEKDBCDBHDICDEEMCBHQCDHJ `NHOKCDLHKJADUALMJCDEKFADJCJIHDIJHIAUFABCDEFADGHDICADJCJIAJIKDBKLBCbH INHJILMFIMLHKDBFABCDEJIPQHAUKJFLCRIALJHIAUJFLCRIJJAINKIPAMKDBAINHLJ FKDHKJCQPLHKBKDBMDBHLJIKDBINHFABHZcJCDEEAABFABCDEFADGHDICADJLHJMQIJCD RLHFCJH_LHKBK]QH_KDBMDKO]CEMAMJJAMLFHFABHINKICJFADJCJIHDISCINAINHL QKDEMKEHFADGHDICADJKDBCJKJCDIMCICGHKJRAJJC]QHZ 6d*09-*9=-e7*+6d*f/*97d*0 YKLQCHLGHLJCADJAUVWXFLCRINKBDAOHFNKDCJOUALFLHKICDEMJHLgBHUCDHB FADJIKDIJZ@ADJIKDIJ_CUMJHB_SHLHCORQHOHDIHBKJGKLCK]QHJKDBBCJICDEMCJNHB ULAOAINHLGKLCK]QHJMJCDEKQQMRRHLFKJHFNKLKFIHLJZTMQICRQHSALBJSHLH JHRKLKIHBMJCDEINHMDBHLJFALHhijFNKLKFIHLZkALHaKORQH[ cXYlimnX`iTop \Yqimn\Y qNCQHINCJCJJICQQKDKFFHRIK]QHSKPIACBHDICUPPAMLFADJIKDIJ_PAMOKPSKDIIA MJHKDKQIHLDKICGHDKOCDEJFNHOH_DASINKIPAMFKDFLHKIHILMHFADJIKDIJMJCDE INH@ADJIJIKIHOHDIZ`NCJFADGHDICADMJHJKOCaHBgFKJHUALOKICDSNCFNFADJIKDI DKOHJNKGHKrFADrRLHUCaZkALHaKORQH[ @ADsAMLtSD@ADJIKDI 4-67-uv/=-e7*+6d*f/*97d*0 kALRMLRAJHJAULHKBK]CQCIPKDBFADJCJIHDFP_MJHINHUAQQASCDERLHUCaHJSCIN BHJFLCRICGHDKOHJUALGKLCK]QHJCDPAMLVWXFLCRIFABHZ 4.u9w8/ WAAQHKD WPIH {KIH {AM]QH YLLAL nDIHEHL mADE t]^HFI XCDEQH XILCDE
96/x7y WQD WPI {IO {]Q YLL nDI mDE t]^ XDE XIL
?y-e8v/ WQDkAMDB WPIzMKDICIP {IOXIKLI {]Q|LCFH YLLtLBHL\MO nDI|LCFH mDE{CJIKDFH t]^@MLLHDI XDEoGHLKEH XIL\KOH
4-67-uv/45d8/ VKLCK]QHJJNAMQBKQSKPJ]HBHUCDHBSCININHJOKQQHJIJFARHRAJJC]QHZVWXFLCRI GKLCK]QHJFKDNKGHINHUAQQASCDEJFARHZ
45d8/ |LAFHBMLHgQHGHQ XFLCRIgQHGHQ
123
}~/6/4-67-uv/70 </5v-6/ YGHDI_kMDFICAD_ALXM] RLAFHBMLH Yo{JHFICADAUKD `TmRKEH_AMIJCBHKDP RLAFHBMLH
4707u7v79w VCJC]QHCDINHRLAFHBMLH CDSNCFNCICJBHFQKLHB VCJC]QHCDHGHLP RLAFHBMLHCDINHJFLCRI
1)56)*+,34-7,.5,/60,1 23345678369:;5<=3>3<?<:38@:ABCD:<EF:6G;BFC:8<HD64ICJ?6EE:5:G86B8:8@: 34<7:<EAB56BFC:3K2<G:LC:88:534<7:75:E6M75:4:?6G;8@:8J7:75:E6M75<A6?:3 8@63>=68@<D8DG?DCJ6G45:B36G;8@:369:<EAB56BFC:GBN:3K
34-7, Q5<4:?D5:LC:A:C T45678LC:A:C
.5,/60 R<G: T
12345678
O0)P7+, SFCQ564: TSFCQ564:
U,1456786V,1)56)*+,)WX.5-4,XY5,Z)P,1 [@:F<?J<EBAB56BFC:<575<4:?D5:GBN:3@<DC?D3:N6M:?4B3:BG?3@<DC?F:B3 4<N7C:8:B3G:4:33B5J8<?:3456F:6837D57<3:K\GB??686<G>75<4:?D5:GBN:3 3@<DC?F:;6G=68@BA:5F>3D4@B3\G68RBN:255BJ<5]C<3:S6BC<;K ^<5E5:HD:G8CJD3:?<5C<G;8:5N3>38BG?B5?BFF5:A6B86<G3B5:5:4<NN:G?:?8< @:C7I::7GBN:C:G;8@5:B3<GBFC:K\G;:G:5BC>AB56BFC:GBN:3;5:B8:58@BG_` 4@B5B48:534BGF:?6EE64DC88<5:B?Ka@:GD36G;BFF5:A6B86<G3>NBI:3D5:8@:JB5: 4<G3638:G88@5<D;@<D88@::G865:345678K^<5:MBN7C:>5BG?<NCJ3=684@6G;F:8=::G ]G8BG?]<DG8=68@6GB345678<53:8<E3456783NBJC:B?8<4<GED36<GK b*c,48Z)P6Wde-WV,W86-W1 [@:E<CC<=6G;8BFC:C63835:4<NN:G?:?4<GA:G86<G3E<5<Ff:483J<DNBJ :G4<DG8:5=@6C:75<;5BNN6G;ghT45678K e-X,e-PP,W86Wde-WV,W86-W1 2CC75<4:?D5:33@<DC?F:;6G=68@BF56:E4<NN:G8?:3456F6G;=@B88@:J?<K[@63 ?:3456786<G3@<DC?G<8?:3456F:8@:6N7C:N:G8B86<G?:8B6C3i@<=68?<:368j F:4BD3:8@:3:<E8:G4@BG;:<A:586N:>5:3DC86G;6GDGG:4:33B5J4<NN:G8 NB6G8:GBG4:=<5I><5=<53:>:55<G:<D34<NN:G83K[@:4<?:683:CEBG?BGJ G:4:33B5J6GC6G:4<NN:G83?:3456F:8@:6N7C:N:G8B86<GK 25;DN:G837B33:?8<B75<4:?D5:3@<DC?F:?:3456F:?=@:G8@:657D57<3:63G<8 <FA6<D3BG?=@:G8@:75<4:?D5::M7:4838@:B5;DN:G838<F:6GB37:46E645BG;:K k:8D5GABCD:3E<5EDG486<G3BG?AB56BFC:38@B8B5:4@BG;:?FJB75<4:?D5:> :37:46BCCJ8@5<D;@5:E:5:G4:B5;DN:G83>3@<DC?BC3<F:?:3456F:?B88@:F:;6GG6G; <E:B4@75<4:?D5:K Q5<4:?D5:@:B?:54<NN:G833@<DC?6G4CD?:8@:E<CC<=6G;3:486<G@:B?6G;3K^<5 :MBN7C:3>3::8@:E<CC<=6G;8BFC:8@B8:M7CB6G38@:3:486<G@:B?6G;BG?8@: 4<NN:G84<G8:G838<F:6G3:58:?=@6C:?:A:C<76G;4<?:K 3,486-Wl,)X6Wd QD57<3: 233DN786<G3 nEE:483 \G7D83 k:8D5GgBCD:3
e-PP,W8e-W8,W81 a@B88@:75<4:?D5:?<:3iG<8@<=jK m638<EBGJ:M8:5GBCAB56BFC:>4<G85<C><5<8@:5:C:N:G8=@<3: 38B8:BEE:4838@6375<4:?D5:K m638<E8@:75<4:?D5:o3:EE:48<G:B4@:M8:5GBCAB56BFC:>4<G85<C> <5<8@:5:C:N:G8K nM7CBGB86<G<E:B4@B5;DN:G88@B863G<8<FA6<D3KnB4@ B5;DN:G83@<DC?F:<GB3:7B5B8:C6G:=68@6GC6G:4<NN:G83K nM7CBGB86<G<E8@:ABCD:5:8D5G:?K
p,P,P*,58q,r-++-s6Wd.-6W81t nA:5J6N7<58BG8AB56BFC:?:4CB5B86<G3@<DC?6G4CD?:BG6GC6G:4<NN:G8?:3456F6G; 8@:D3:<E8@:AB56BFC:F:6G;?:4CB5:?K gB56BFC:3>4<G85<C3>BG?75<4:?D5:33@<DC?F:GBN:?4C:B5CJ:G<D;@8@B86GC6G: 4<NN:G83B5:<GCJG::?:?E<54<N7C:M6N7C:N:G8B86<G?:8B6C3K
uvw
4567897*+,-*+.-+/0
122345467887869:;9<=>?=7@2A;9<>39<BC78?B<C4D89E4=E74F23D2C4>?=754>234 >?=7@2A48<G4=D278695H4?2>A@=9?4C<=4>ADB69=723G>AC7DB9659I4>AD8C9234= >;>24GC4@48C48?74>JK9G427G4>D@74?49:@>4<C9?9C4C4>?=75786234DB69=723G ?D85434B@:<BJ LM6N-997*+OM.6PMQ/ K?=448>@D?4>39<BC54?98>4=E4CD>G<?3D>@9>>75B4AF37B4>27BBDBB9F786?9C4 :9=GD2278629=4:B4?2B967?>2=<?2<=4D8C84>2786JR4=4D=4D:4F@97824=>S T K2D8CD=C84>24C5B9?U>>39<BC5478C4824C:9<=>@D?4>J T V349E4=E74F?9GG482>9:D@=9?4C<=4>39<BC5478C4824C984>@D?4J T V3437634>2B4E4B>2D24G482>23D2:9BB9F2349E4=E74F?9GG482>>39<BC54 78C4824C:9<=>@D?4>AF7234D?384>24C5B9?U78C4824CD8DCC72798DB:9<= >@D?4>JW9=4IDG@B4A>44234?9C478W76<=4XJ1Y54B9FS Z[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ Z\<=@9>4S]9?D24>234:7=>29??<==48?49:D>@4?7:74C<>4= Z 78234^>4=]7>2D==D;J Z_8@<2>S>2=^>4=]7>2`aS234B7>29:<>4=>2954>4D=?34CJ Z >2=VD=642^>4=S2348DG49:234<>4=29>4D=?3:9=J Zb42<=8>SV3478C4I9:234:7=>29??<==48?49:234>2=VD=642^>4= Z 78234>2=^>4=]7>2D==D;J Z _:2342D=642<>4=7>892:9<8CA=42<=8c1J Z[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ W<8?2798782W78C^>4=`>2=^>4=]7>2`aA>2=VD=642^>4=a d7G7 Z]99@?9<824=J d7G5B8W9<8C ZVD=642:9<8C:BD6 782W78C^>4=ec1 7ef Z_8727DB7g4B99@?9<824= d9h37B47ie^59<8C`>2=^>4=]7>2aD8Cj925B8W9<8C _:>2=^>4=]7>2`7ae>2=VD=642^>4=V348 5B8W9<8CeV=<4 ZK42:BD629V=<4 782W78C^>4=e7ZK42=42<=8EDB<429B99@?9<82 k8C_: 7e7l1 Z_8?=4G482B99@?9<824= ]99@ k8CW<8?2798
Pm/5nOM.6o6M+6/00p
1J h=724DG48<cC=7E48@=96=DG78qrK?=7@229?34?UF34234=D8<G54=7> 4E48A9CCD8CF34234=727>@=7G4J sJ h=724D@=9?4C<=429?34?UF34234=D>2=7867>D@DB78C=9G4J
tuv wxPyxz{|}Oz~ Pyx{ ~4P}xoy
123
V34d7?2798D=;95H4?2>29=4>CD2DD>U4;A724G@D7=>J1d7?2798D=;95H4?27>234 4 <7EDB4829:D\kb]D>>9?7D27E4D==D;J_24G>AF37?3?D854D8;:9=G9:CD2DAD=4 >29=4C78234D==D;JkD?3724G7>D>>9?7D24CF723D<87 <4U4;JV34U4;7><>4C29 =42=74E4D878C7E7C<DB724GD8C7><><DBB;D8782464=9=D>2=786A5<2?D854D8;23786 4I?4@2D8D==D;J V34:9BB9F786?9C47BB<>2=D24>39F29?=4D24D8C<>4Dd7?2798D=;95H4?2S
3 ; = 4 @ 4 D 2 2 3 7 > < 4 > 2 7 9 8 V 3 4 G 4 8 < C = 7 E 4 3 7 > 7 > : 7 8 4 7 : 2 3 4 > 2 < C 4 8 2 > 3 D E 4 C 9 8 4
)*+,-. )*/01.)+2+-/.3456789:/;<6<9=7)>+2+-/.)>*/01. )?@A2B+-0CDE0D/FGHI?J5KL=G. )MNN 1K6: O@5<8=<8?J5KL=-<P<;P85K8Q;< ?<=:F@5<8=<RQS<J=TG?J5KL=K9UV1KJ=K4985WGX ?YQJ6:0::ZR9@;KJ[ :V0::G\G]G0685G O0::746<[<W789:K=<67 :V0::G^G]GIY9=WG :V0::G_G]G@`8689G 8F:VK=<67 345KF\+4:V@4Y9= :4JY6<9=Va563456V/;<6<9=7TKXVH8;Y<F8TKX C<b= /9:?YQ ?YQJ6:/bK7=Z49@;KJ[ :V0::G8G]G0685G O0::746<[<W789:K=<67V :V0::GQG]GIY9=WG :V0::GJG]G@`8689G 2a:V/bK7=7TGJGX+`<9 67UQ4bG@[<W<bK7=7VG /;7< 67UQ4bG@[<W:4<794=<bK7=VG /9:2a /9:?YQ ?YQJ6:c<WZ49@;KJ[ :V0::G8G]G0685G O0::746<[<W789:K=<67V :V0::GQG]GIY9=WG :V0::GJG]G@`8689G :Vc<WTGJGXFG:G O?<=[<Wa45GJG=4G:GV /9:3Y9J=K49 /9:?YQ ?YQJ6:c<W7Z49@;KJ[ :V0::G8G]G0685G O0::746<[<W789:K=<67V :V0::GQG]GIY9=WG :V0::GJG]G@`8689G 8F:V[<W7 345KF\+4:V@4Y9= :4JY6<9=Va563456V/;<6<9=7TKXVH8;Y<F8TKX C<b= /9:?YQ ?YQJ6:A<64P<Z49@;KJ[ :V0::G8G]G0685G O0::746<[<W789:K=<67V :V0::GQG]GIY9=WG :V0::GJG]G@`8689G :VA<64P<TGQGX 8F:V[<W7 345KF\+4:V@4Y9= :4JY6<9=Va563456V/;<6<9=7TKXVH8;Y<F8TKX C<b=
12345678
deffghij?`4Y:94==`<)>*/01.Q< 8a=<5=`<)>?@A2B+.k
deffghijl`<5<K7=`<3Y9J=K49 Q<UK99K9Uk+`<J4:<;K7=K9U77`4Y;:Q< =<7=<:4Y=Y7K9UJ4LW89:L87=<V
^mn
4567897*+,-*+.-+/0
123456 4567839:8;<=>?:3>@:29AB7C 3D9:8;<=>?:3>EF6G>HI9:8;<=> 3DJ33K<KLKJ8<=K MJ33N:8>C>ON<23BI>8ND 3DJ33K6KLKP52IOK 3DJ33K7KLK9Q<8<2K 3DJ33KPKLKP<AIB8:=>K MJ338>IQ:3R<BAN:2IQBNAB2>6>7<5N>IQ> MA>II>=6<A=><3O>HBNINB2IQ>SB7IB:2<=OD 123456 TTU VW49XYZGU VP[S\U V91]G1XU V^[X? ]J?1EKR=8^:=8KUV;U VY2;5IGO;>EKG>HIKUV;U VY2;5IGO;>EKG>HIKUV;U VY2;5IGO;>EKG>HIKUV;U VY2;5IGO;>EKP5II:2K]J?1EK783J33K_J`a1EKJ33KU VY2;5IGO;>EKP5II:2K]J?1EK7831HBNIK_J`a1EK1HBNIKU VY2;5IGO;>EKP5II:2K]J?1EK783b>ONK_J`a1EKb>ONKU VY2;5IGO;>EKP5II:2K]J?1EK783X>8:F>K_J`a1EKX>8:F>KUV;U VY2;5IGO;>EKP5II:2K]J?1EK7839:8;<=>?:3>K_J`a1EK9:8;<=> ?:3>KU VY2;5IGO;>EKP5II:2K]J?1EK783b>OK_J`a1EKb>OKU VW^[X?U VW91]G1XU VWP[S\U VWcG?`U
d7+.6/efghijk/l07*+9m/n7597j*-6opqr/59
efsfg t/9mjk0huv456789n7597j*-6opqr/59
123
t/9mjk J33?>IQ:3 1HBNIN?>IQ:3 YI>8N?>IQ:3 b>ON?>IQ:3 X>8:F>?>IQ:3
n/0567897j* J33N<C>OLBI>8;<B=D Y23B7<I>NBR<N;>7BRB>3C>O>HBNIND X>I5=2N<2<==<O7:2I<B2B2w<AABI>8NB2<SB7IB:2<=O:6x>7ID X>I5=2N<2<==<O7:2I<B2B2w<AAC>ONB2<SB7IB:2<=O:6x>7ID X>8:F>N<C>OLBI>8;<B=DZ=:;>=IB>Ny_P47=B;ISB7IB:2<=O[6x>7I
)**+,8-.*
12345678
3/0812 3456789:;;<6=>?86@ ABC,48 DE6FG@63HGI?78?3FGJ=3456789K6LM?J6; N,/ DE6<6=GOO37?G86;P?8E8E6?86@46?FQG;;6;9K6LM?J6;9 R8,S DE6?86@GOO37?G86;P?8E8E6<6=46?FQG;;6;9K6LM?J6;9 T,S15UV :F6JJ3J377MJO?H8E6<6=GWJ6G;=6X?O8O9
K6H6J83Y?QMJ6Z9[\H3J8E66XG@]W69^F8E67@;:;;_3F`W?7<]J376;MJ68E?O@68E3; ?OMO6;83G;;8E6a6=OGF;^86@O838E6I?78?3FGJ=3456789 b26V8V+,8-.* K68MJFODJM6?HGO]67?H?6;<6=6X?O8O?F8E6I?78?3FGJ=345678>YGWO6?H?8;36OF389 3/0812 3456789cX?O8Od<6=e ABC,48 DE6FG@63HGI?78?3FGJ=3456789K6LM?J6;9 N,/ DE6<6=fGWM646?FQO6GJ7E6;H3J?F8E6I?78?3FGJ=3456789K6LM?J6;9
K6H6J83Y?QMJ6Z9[\H3J8E66XG@]W69^F8E67@;cX?O8O_3F`W?7<]J376;MJ68E?O @68E3;?OMO6;837E67<8E66X?O86F763HGF=a6=fGWM6?F8E6I?78?3FGJ=3456789 R8,SV+,8-.* K68MJFOGFGJJG=73F8G?F?FQGWW8E6?86@O?FGI?78?3FGJ=3456789 3/0812 3456789^86@O ABC,48 DE6FG@63HGI?78?3FGJ=3456789K6LM?J6;9
K6H6J83Y?QMJ6Z9[\H3J8E66XG@]W673;69^F8E67@;:;;_3F`W?7<]J376;MJ68E?O @68E3;?OMO6;83J68J?6f68E6?86@O?F8E6GJJG=fGJ?G4W69 N,/V+,8-.* K68MJFOGFGJJG=73F8G?F?FQGWW6X?O8?FQ<6=O?FGI?78?3FGJ=3456789 3/0812 3456789a6=O ABC,48 DE6FG@63HGI?78?3FGJ=3456789K6LM?J6;9
K6H6J83Y?QMJ6Z9[\H3J6XG@]W673;69^F8E67@;a6=O_3F`W?7<]J376;MJ68E?O @68E3;?OMO6;83J68J?6f68E6a6=O?F8E6GJJG=fGJ?G4W69 T,S.g,+,8-.* K6@3f6OG<6=>?86@]G?JHJ3@GI?78?3FGJ=3456789:F6JJ3J377MJO?H8E6O]67?H?6; <6=>?86@]G?J;36OF386X?O89 3/0812 3456789K6@3f6d<6=e ABC,48 DE6FG@63HGI?78?3FGJ=3456789K6LM?J6; N,/ DE6a6=GOO37?G86;P?8E8E6<6=h?86@]G?J=3MPGF883J6@3f6HJ3@8E6 I?78?3FGJ=3456789K6LM?J6;
K6H6J83Y?QMJ6Z9[\H3J6XG@]W673;69^F8E67@;K6@3f6_3F`W?7<]J376;MJ68E?O @68E3;?OMO6;83J6@3f68E6?86@HJ3@8E6;?78?3FGJ=3456789
ijkjl 12345678m6486.015/ABC,48n5.7,586,V
oMO8W?<6F3J@GW345678O8E6I?78?3FGJ=345678GWO3EGO76J8G?F]J3]6J8?6O9DE6O6 ]J3]6J8?6O7GF46O6883GF=fGW?;fGWM6GF;7GF46J68J?6f6;GOGF;PE6FJ6LM?J6;9 pZp
4567897*+,-*+.-+/0
1628/693 56789:;<6=;>:68;:?@ 56KF?>:68;:?@ O?;7>:68;:?@ Q;@>:68;:?@
4/05678972* AB;C6789:DE6F76=;G6:E?:DFHI;@EJ AB;FK7L;:6GD?;7EDF9MDC?D6F9:@6LN;C?J PFD?;7G6:9I;@J PI;@R@F?9STUVRC:D8?MDC?D6F9:@WLN;C? RC:D8?DFHJMDC?D6F9:@
X2Y8-6/Z2[/1628/693 R;?E9F=:;?K:FE?B;C6789:DE6F76=;G6:C6789:DFHE?:DFHI;@EDF9MDC?D6F9:@ 6LN;C?J R@F?9ST6LN;C?J56789:;<6=;\]^_`abcde AB;56789:;<6=;8:68;:?@B9E?B;G6ff6gDFH89:?ET 1-69 WLN;C? 56789:;
4/05678972* h;iKD:;=JPfg9@E?B;F97;6G9MDC?D6F9:@6LN;C?J W8?D6F9fJOG8:6jD=;=k^_`abcdDE9j9fK;:;8:;E;F?DFH?B;C6789:DE6F76=;KE;= L@GKFC?D6FEEKCB9ER?:5678J
AB;^_`abcd9:HK7;F?B9E?B;G6ff6gDFHE;??DFHET
X2*09-*9 l-m./ 4/05678972* ULVDF9:@56789:; n >;:G6:79LDF9:@C6789:DE6FJ jLA;S?56789:; 1 >;:G6:79?;S?K9fC6789:DE6FJ
h;79:IET U9fK;EH:;9?;:?B9F3C9FL;KE;=?6:;G;:?6C6789:DE6FEKEDFHE8;CDGDCo6C9f;OME po5OMqJPF;::6:6CCK:EDG@6K?:@?6CB9FH;?B;C6789:DE6F76=;6G9MDC?D6F9:@ 6LN;C??B9?9f:;9=@C6F?9DFE=9?9J AB;56789:;<6=;8:68;:?@KE;E?B;E97;j9fK;E9E?B;^_`abcd9:HK7;F?G6:?B; R?:5678GKFC?D6FJ h;G;:?6rDHK:;2J3nG6:;S978f;C6=;JOF?B;C7=56789:;<6=;s6F5fDCI8:6C;=K:; ?BDE8:68;:?@DEKE;=?6E;??B;C6789:;76=;?6A;S?kE6?B9?F6?g6?;S?I;@E?B9?9:; ?B;E97;C9FL;9==;=J X2.*91628/693 h;?K:FE?B;FK7L;:6GD?;7EDF9C6ff;C?D6F6:MDC?D6F9:@6LN;C?JABDE8:68;:?@C9F 6Ff@L;:;9=9F=C9FF6?L;E;?=D:;C?f@J 43*9-t 6LN;C?J56KF? uvw/59 AB;F97;6G9MDC?D6F9:@6LN;C?Jh;iKD:;=J
123
h;G;:?6rDHK:;2J3nG6:;S978f;C6=;JOF?B;C7=P==s6F5fDCI8:6C;=K:;?BDE 8:68;:?@DEKE;=?6:;?:D;j;?B;FK7L;:6GD?;7EE?6:;=DF?B;MDC?D6F9:@6LN;C?J x9/Y 1628/693 R;?E6::;?K:FE9Fyzd`G6:9E8;CDGD;={d|DF9MDC?D6F9:@6LN;C?Jr6:C6ff;C?D6FEk :;?K:FE9Fyzd`L9E;=6F?B;E8;CDGD;={d|JABDE8:68;:?@C9FL;:;?:D;j;=6:E;?J R@F?9ST6LN;C?JO?;7pI;@q\]F;gD?;7e AB;O?;78:68;:?@B9E?B;G6ff6gDFH89:?ET
)*58 +,-456786./ 012345 63789:3;<=>?@AB5C3D@E30F@40>>34590D0:G94590D@:A012345< H3A 63789:3;<IJK@BB049@53;?95C5C3LMJN139DO:35:93P3;0:@;;3;< 590D@><SB3;F0:G94590D@:A0123450D>ATD0@RR>94@590DF0:40>>34590DB<UF D3?953E QR R:0P9;3;VWJXLMJN9B5C3D3?P@>83@BB049@53;?95C5C3BR349F93;YJK<
12345678
63E@:HBZ UFYJK9BD05F08D;?C3D4C@DO9DO@DLMJNV@D3?YJK9B4:3@53;?95C5C3BR349F93; WJXLMJN<UFYJK9BD05F08D;?C3D@553ER59DO50:358:D@D3[9B59DO953EV@D3?YJK9B 4:3@53;@D;95B40::3BR0D;9DO953E9B>3F53ER5A< \,])5.7,58] ^35B@H3A9D@G94590D@:A012345<UFH3A9BD05F08D;?C3D4C@DO9DO@H3AV@D3::0: ?9>>0448:< ^AD5@[Z_`aJbM<c3AdYJKefWJXYJK gC3\,]R:0R3:5AC@B5C3F0>>0?9DOR@:5BZ )*58 +,-456786./ 012345 63789:3;<=>?@AB5C3D@E30F@+6486./*5]012345< c3A 63789:3;<IJKP@>83139DO4C@DO3;< D3?H3A 63789:3;<h3?P@>835C@5:3R>@43B5C3BR349F93;YJK<
63F3:50i9O8:3j<klF0:3[@ER>340;3<UD5C34E;c3Am0Dn>94HR:043;8:35C9B R:0R3:5A9B8B3;504C@DO35C3H3AP@>83F:0Eonp50oGp<
qrst uvvw2xuyz
gC3{|^4:9R5}::Q1234540D5@9DB9DF0:E@590D@1085:8D~59E33::0:B<gC3R:0R3:593B 0F5C3}::012345@:3B351A5C3O3D3:@50:0F@D3::0:~{9B8@>|@B94V@D=850E@590D 012345V0:5C3{|^4:9R5R:0O:@EE3:< gC3;3F@8>5R:0R3:5A0F5C3}::0123459Bh8E13:<}::<h8E13:40D5@9DB@D9D53O3:@D; 4@D138B3;1A@D=850E@590D01234550:358:D@D^nQG}< C3D@:8D~59E33::0:0448:BV5C3R:0R3:593B0F5C3}::012345@:3F9>>3;?95C 9DF0:E@590D5C@58D9783>A9;3D59F93B5C33::0:@D;9DF0:E@590D5C@54@D138B3;50 C@D;>395<g0O3D3:@53@:8D~59E33::0:9DA08:40;3V8B35C3{|^4:9R5}::Q12345 6@9B3 35C0;<gC3}::012345 BR:0R3:593B@:3:3B3550 3:00: 3:0~>3DO5CB5:9DOBd e @F53:@DQD}::0:63B8E3h3[5B5@53E3D5<gC3{|^4:9R5}::Q12345n>3@: 35C0;4@D 138B3;503[R>9495>A:3B35}::012345<gC3}::0123459B@D9D5:9DB94012345?95CO>01@> B40R3~5C3:39BD0D33;504:3@53@D9DB5@D430F959DA08:40;3< n0DB9;3:5C3F0>>0?9DO3[@ER>3V?C94C;9BR>@ABB0E30F5C3R0BB91>33::0:B5C@54@D 13:@9B3;3[R>9495>A50O3D3:@53:8D59E33::0:B< g }=G gUg } U hQS gUg } ^n6U g =h S= }f {|^4:9R5 ~~ ^814E;^81E95mQDn>94H
j
4567897*+,-*+.-+/0
123
1234454467896:6;< =>?6@A<5766BC<?6876462<646DE2F<?B2GH ICJK62JD5@8962<HC5491H<;<LG6HMEN86OPQOR?62 S7GT5;UV58987<62<64F584EG6W6C54678W9B<<B2GHU 3;B<X8W 32DIC =>?6@A<5766BC<?6876462<646DE289W64H ICJ:5<JI7:8964B@JD5@8962<HC5491H<;<LG6HMEN86OOOR?62 S7GT5;UV58987<62<64E289W64C54F584EG6HU 3;B<X8W 32DIC =>?6@A<5766BC<?6EG662<646DB7MENBDH ICJD5@8962<HC5491H<;<LG6HMEN86YPQO14JD5@8962<HC5491H<;<LG6HMEN86Z1QQO R?62 S7GT5;UR?6EG6F5862<646DB7B2MENBDHU 3;B<X8W 32DIC =[E<EN55A75AEF7578W9B<B<H S7GT5;UR?E2A7C54\45MBDB2GF584EG6HU D5@8962<HC5491H78W9B< 32DX8W X8W@9D<F\6]12>NB@A 1234454^67896:6;< C54BP1<5_2 344H@N6E4 344H^EB76B S7GT5;344HD67@4B\<B52`Ua34454289W64aU`B :6;< 32DX8W aaZ YbX>^IcRZ Ybd3L[Z YT1[V WG>5N54PUeCCCC@@UR6;<PUeQQQQffUZ Yd1Z34454dE2DNB2GE2DMENBDE<B527Ybd1Z YTZYcZR?B76;E9\N6D69527<4E<67MENBDE<B52<6@?2Bg867E2D34454?E2DNB2GB2 hTX@4B\<HYbcZYiTZ YTZcN6E7662<64<?6EG6W6<j6621E2D1QQH1<?64jB76kE2644549677EG6j58NDW6
)*+,-./012*3243156-.,78936876601:;<=> ;?@AB CDBEFG)0H9IG> ;JD=KE> ;JA> ;JL>E16.HM07H+5.N;<JL> ;JL>;OCPQJJRPEFGJ.S6GCDBEFG6S6D5.GTOUEFGVG>;<JL> ;<JA> ;JA> ;JL>;OCPQJJRPEFG=76601GCDBEFG29/T78936GWDKQEFGT78936G>;<JL> ;JL>;<JL> ;JL>;OCPQJJRPEFG=76601GCDBEFG29/6MX.GWDKQEFG JMX.@)EHH0H, G>;<JL> ;JL>;<JL> ;<JA> ;<JD=KE> ;<?@AB> ;<=@LR> ;<YJBK>
12345678
Z6[\5]^_`ab55c5defgh6f[6f12345678
^_ij_i k]8lcgma12345678b55nop]48 qh]e5k]8lcg se6m]k]8lcg
r*.+H,+**XH0X.H6M,.66315,: t.1.H+6.+H71u639..HH0H:
v 12345678b55nop]48qh]e5k]8lcg 3wf8ex a EHH:r*.+H r*.+H,+**XH0X.H6M,.66315,0)6-.EHH08y.26:Q,.r*.+H60.SX*3236*M2*.+H6-. EHH08y.26+)6.H+1.HH0H-+,8..1-+1/*./:J-3,3,1.2.,,+HMz)0H.S+9X*.z{-.1 M077,./.).HH./.HH0H-+1/*315{36-@1EHH0HA.,79.C.S6:W=T2H3X62+**,6-. r*.+H9.6-0/+7609+632+**M{-.1.|.H+1M0)6-.)0**0{315,6+6.9.16,+H. .S.276./N }@1EHH0HA.,79.C.S6 }ES36T78 }ES36?7126301 v 12345678b55nop]48se6m]k]8lcg 3wf8exa EHH:A+3,.~1798.Hz,07H2.z/.,2H3X6301z-.*X)3*.z-.*X2016.S6 J-.@1EHH0HA.,79.C.S6,6+6.9.16z+*,02+**./+1.HH0H-+1/*.Hz3,+ XH02./7H.u*.|.*,6+6.9.16:O601*MH.9+31,31.)).26{36-316-.XH02./7H.6-+6 2016+31,6-.01.HH0H/.2*+H+6301:J-.W=T2H3X6316.HXH.6.Hz*34.9+1M
!""
4567897*+,-*+.-+/0
123452467892:76723699;9<;=:4=69>211:3416?61753<:1:<@:3A72B9;>6A596<=2< =23A167<=6699;9CD@3;36:7@;53A8<=67>9:B<=21<723A<=65769:7B96763<6AE:<= <=6699;996751<7FG<=6:3<69B96<69CH=6I2:76J6<=;A:7576A@;9463692<:34 953K<:J6699;97CL11<=62945J63<7;@<=:7J6<=;A296;B<:;3216M>6B<N5JF69C O;E6?698:@G;5576I2:768E:<=;5<7B6>:@G:347;J62945J63<7823A<=6 B9;B69<G76<<:347;@<=6P99;FQ6><>;3<2:3?21567<=2<=2?63;<F663>16296A8 <=;76?21567F6>;J6<=6?21567@;9G;59699;9CR=6376<<:34<=635JF69 B9;B69<G<;G;59;E3699;9>;A6:323L5<;J2<:;3;FQ6><8G;52AAG;59699;9 >;A635JF69<;<=6>;37<23<?FSFQ6><P99;9CT;96M2JB168<;463692<6<=6699;9 35JF691U2U8277:43?FSFQ6><P99;9V1U2U<;<=635JF69B9;B69<GC
W6+.X/*90 Y/0567897Z* [.X\/6 L];34:3<646975F<GB6<=2<:A63<:@:67<=632<596;@<=6699;9C^_`>9:B< 699;97aF;<=^_`>9:B<KA6@:36A23A5769KA6@:36A699;97b296:3<=692346UK 322c2C 4Z.65/ L7<9:346MB9677:;332J:34<=6;FQ6><;92BB1:>2<:;3<=2<;9:4:3211G 463692<6A<=6699;9CR=6376<<:34<=:7B9;B69<G@;923L5<;J2<:;3;FQ6><8 576<=6@;9JB9;Q6><C>1277CD@3;<=:34:77B6>:@:6A8<=6B9;492JJ2<:>Dd;@ <=6>59963<^_`>9:B<B9;Q6><:7576AC Y/0567897Z* L7<9:346MB9677:;3A67>9:F:34<=6699;9CD@537B6>:@:6A8<=6?2156:335JF69 :76M2J:36ACD@:<>23F6J2BB6A<;2^_`>9:B<953K<:J6699;9>;A6827<9:34 B9;?:A6AFG^_`>9:B<:7576A27<=6A67>9:B<:;3CD@<=696:73;^_`>9:B< 699;9>;9967B;3A:34<;35JF698246369:>699;9J677246:7576AC e/f8g7f/ H=6@511Gh521:@:6AB2<=<;<=6O61B@:16:3E=:>==61B;3<=:7699;9>23F6 @;53ACD@537B6>:@:6A8^_`>9:B<5767<=6@511Gh521:@:6AA9:?68B2<=823A@:16 32J6;@<=6^_`>9:B<O61B@:16C e/f85Z*9/i9 H=6>;3<6M<Dd:A63<:@G:342<;B:>E:<=:3=61B@:16<=2<B9;?:A67=61B@;9<=6 699;9CD@;J:<<6A8<=6^_`>9:B<O61B@:16>;3<6M<Dd@;9<=6699;9 >;9967B;3A:34<;<=635JF69B9;B69<G:7576A8:@:<6M:7<7
jklmkno6Z8/697/0pqr456789s66t\u/59 o6Z8/697/0 Y/0567897Z*o6Z8/69v e/f8wZ*9/i9o6Z8/69v e/f8x7f/o6Z8/69v [.X\/6o6Z8/69v 4Z.65/o6Z8/69v
Y/0567897Z* H=6A67>9:B<:?67<9:34277;>:2<6AE:<=23699;9C L>;3<6M<Dd@;92<;B:>:32R:3A;E7=61B@:16C L@511Gh521:@:6AB2<=<;2R:3A;E7=61B@:16C L35J69:>?2156:A63<:@G:3423699;9C H=632J6;@<=6;FQ6><;92BB1:>2<:;3<=2<;9:4:3211G 463692<6A<=6699;9C
y Y/0567897Z*o6Z8/69v I6<5937;976<72A67>9:B<:?67<9:34277;>:2<6AE:<=23699;9CH=6d67>9:B<:;3 B9;B69<G>;37:7<7;@27=;9<A67>9:B<:;3;@<=6699;9Cz76<=:7B9;B69<G<;2169< <=65769<;23699;9<=2<G;5>233;<;9A;3;<E23<<;=23A16CR=63463692<:342 5769KA6@:36A699;98277:4327=;9<A67>9:B<:;3;@G;59699;9<;<=:7B9;B69<GCD@ d67>9:B<:;3:73;<@:116A:3823A<=6?2156;@<=6^_`>9:B<P99SFQ6><N5JF69 {9;B69<G>;9967B;3A7<;2^_`>9:B<953K<:J6699;98<=6A67>9:B<:?67<9:34 277;>:2<6AE:<=<=6699;9:796<5936AC 4v*9-i W6+.X/*9p 4967*+/i86/007Z*
123
P99Cd67>9:B<:;3|}~ ~~ L7<9:346MB9677:;3>;3<2:3:342A67>9:B<:;3;@<=6699;9C
y e/f8wZ*9/i9o6Z8/69v `6<7;996<59372>;3<6M<Dd@;92<;B:>:32O61BT:16CD@2O61B@:16:77B6>:@:6A
)*+,-./012)3+422567-1+8-93:)9-;2<3-2+=>+,-8-93?<*+-@+32<3-2+=)ABA-C +<DB+<ED+)1D99=C)A39D=+,-8-93+<3)1)C-*+)F)-CGHF6<+,8-93:)9-D*C 8-93?<*+-@+D2--E3+=>+,-ID9B-<F+,-./012)3+422567-1+JBE6-2;2<3-2+= )A1,-1K-CGHF)+1<22-A3<*CA+<D./012)3+2B*L+)E--22<2ID9B->+,-*+,./012)3+8-931<*+-@+HMF<2+,--22<2)ABA-CGHF+,-JBE6-232<3-2+=C<-A*<+ 1<22-A3<*C+<D./012)3+-22<2>+,-1<*+-*+AA12--*F<2+,-./012)3+8-93F)9-)A C)A39D=-CG
3NO8PQ ]5^_`aO8b4cO8aQ8de
12345678
422G8-93?<*+-@+RSTUVWXYWZ[\ fID9)C)C-*+)F)-2F<2D8-93+<3)1g)+,)*+,-8-93F)9-G 53+)<*D9G
h iaj7k6jal5c7a58N 0-+A<22-+B2*ADFB99=mBD9)F)-C3D+,+<D8-93:)9-GHFD8-93F)9-)AA3-1)F)-C)* 8-93:)9->)+)ADB+<ED+)1D99=1D99-Cg,-*+,-BA-219)1KA+,-8-936B++<*n<2 32-AA-A+,-:oK-=p)*+,--22<2E-AADq-C)D9<q6<@GHF+,-./012)3+422567-1+ 8-93?<*+-@+;2<3-2+=1<*+D)*ADID9)C1<*+-@+HMF<2+,-A3-1)F)-CF)9->+,D+ +<3)1)ADB+<ED+)1D99=C)A39D=-CGHF*<8-93:)9-)AA3-1)F)-C>+,-./012)3+8-93 F)9-)AC)A39D=-CG 3NO8PQ ]5^_`aO8b4cO8aQ8de
422G8-93:)9-RSTUVWXYWZ[\ r,-FB99=mBD9)F)-C3D+,+<+,-8-93F)9-G53+)<*D9G
h s_`ta5l5c7a58N u-+B2*A<2A-+AD*BE-2)1ID9B-A3-1)F=)*qD*-22<2GJBE6-2)A+,-422<67-1+vA C-FDB9+32<3-2+=Gw,-*2-+B2*)*qDBA-2LC-F)*-C-22<2F2<ED*fB+<ED+)<* <67-1+>A-+422GJBE6-26=DCC)*q+,-*BE6-2=<BA-9-1+-CDAD*-22<21<C-+< +,-1<*A+D*+I6567-1+422<2G:<2-@DE39->=<BBA-+,-F<99<g)*q1<C-+<2-+B2* +,-*BE6-2oxyoDAD*-22<21<C-z 422GuD)A-JBE6-2zSI6567-1+422<2{oxyo>0<B21-zS|0<E-?9DAA|
422GJBE6-2RSX}}U}V~ X}\ 3NO8PQ ]5^_`aO8ba55c5O_`ta5 f*)*+-q-22-32-A-*+)*qD./012)3+-22<2*BE6-2<2D*0?5M4 -22<2ID9B-G
h 3c_54al5c7a58N u-+B2*A<2A-+A+,-*DE-<F+,-<67-1+<2D339)1D+)<*+,D+<2)q)*D99=q-*-2D+-C +,--22<2Gr,-0<B21-32<3-2+=A3-1)F)-ADA+2)*q-@32-AA)<*+,D+)ABABD99=+,19DAA*DE-<232<q2DEED+)1HM<F+,-<67-1++,D+1DBA-C+,--22<2G A-0<B21+<32<I)C-=<B2BA-2Ag)+,)*F<2ED+)<*g,-*=<B21<C-)AB*D69-+<,D*C9-D* -22<2q-*-2D+-C)*D*D11-AA-C<67-1+G:<2-@DE39->)F=<BD11-AA )12<A<F+ 4@1-9D*C)+q-*-2D+-ADM)I)A)<*6= -2<-22<2> )12<A<F+4@1-9A-+A+,./012)3+422567-1+JBE6-2;2<3-2+=+<)+A-22<21<C-F<2+,D+-22<2D*CA-+A 0<B21-+<4@1-9D339)1D+)<*GJ<+-+,D+)F+,--22<2)Aq-*-2D+-C)*D*<+,-2<67-1+ 1D99-C6= )12<A<F+4@1-9>4@1-9)*+-21-3+A+,--22<2D*CA-+A422GJBE6-2+<)+A <g*1<C-F<2M)I)A)<*6= -2<G8<g-I-2>)+9-DI-A+,-<+,-2422<67-1+ n)*19BC)*q0<B21-pDAA-+6=+,-<67-1++,D+q-*-2D+-C+,--22<2G 0<B21-D9gD=A1<*+D)*A+,-*DE-<F+,-<67-1++,D+<2)q)*D99=q-*-2D+-C+,-22<2L=<B21<C-1D*+2=+<,D*C9-+,--22<2D11<2C)*q+<+,--22<2 C<1BE-*+D+)<*<F+,-<67-1+=<BD11-AA-CGHF=<B2-22<2,D*C9-2FD)9A>=<B1D* BA-+,-422<67-1+)*F<2ED+)<*+<C-A12)6-+,--22<2+<=<B2BA-2>BA)*q0<B21D*C+,-<+,-2422+<)*F<2E+,-BA-2g,)1,<67-1+<2)q)*D99=1DBA-C+,--22<2>D C-A12)3+)<*<F+,--22<2>D*CA<F<2+,G oy
4567897*+,-*+.-+/0
41*9-2 H6+.I/*9J 0967*+/286/007K*
344567849:;<=>?@ABCDE?C==@FAG LMN4OPQ:RS4:MMO7P4:S4:M:PNOPQNT:USSVO9UNO7PNTUNQ:P:4UN:W NT::44745
X-0/49.Y1JZ:MOQPU[:\SUQ:][TO9TOM8M:W^74U99:SNOPQOP^74_UNO7P4:QU4WOPQ MN79`M5aU`:M84:NT:^74_S:4^74_MNT:S7MMO\V:bUVOWUNO7PM5cT:MO_SV::RU_SV: 97W:\:V7[_:4:VdMT7[MNT:^74_UPWU99:SNMOPS8N\8NW7:MP7NMN74:NT:WUNU74 S:4^74_UPdU9NO7P5 efcagh ef3LZh e6ijklcgLmnoLn3<pqr694OSNph estt 68\9_WuM8\_ONuvPiVO9` wc797PNOP8:NT:^V7[O^UPd:447479984M 7P34474j:M8_:m:RN k^W798_:PN5^74_15cRNmU_:5qUV8:<pp74W798_:PN5^74_15cRN3aUOV5qUV8:<pp cT:P ZO_ada:MMUQ: ada:MMUQ:<plV:UM::PN:4d784PU_:UPW:t_UOVUWW4:MM5p aMQr7Rada:MMUQ:]x]pkP97_SV:N:y74_34474p W798_:PN5^74_15cRNmU_:5^798Mz{ 3PWk^ wiT:9`N7M::O^NT:8M:4:PN:4:WUPdNTOPQ5 k^zg:PzW798_:PN5^74_15NRNLQ:5bUV8:{<x{cT:P aMQr7Rp|78_8MN:PN:4d784UQ:\:^74:M8\_ONNOPQ5p 3RON68\ W798_:PN5^74_15NRNLQ:5^798Mz{
123
3PWk^ k^zm7NzkMm8_:4O9zW798_:PN5^74_15NRNLQ:5bUV8:{{{cT:P aMQr7Rp|78_8MN:PN:4UP8_\:4^74d784UQ:5p 3RONM8\ 3PWk^ wiT:9`N7M::O^NT:UQ::PN:4:WOMbUVOW5 k^zW798_:PN5^74_15NRNLQ:5bUV8:ex{v4zW798_:PN5^74_15NRNLQ:5bUV8:h1xx{ cT:P w aMQr7RpcT:UQ:d78:PN:4:WOMOPbUVOW5p 34459V:U4 3445jUOM:} 3445W:M94OSNO7P<p34474tcT:UQ:d78:PN:4:WOMOPbUVOW5p _MQ\7R3445W:M94OSNO7P 3RON68\ 3PWk^
)*+,+-../0./+10.02345,5,6 7089.:;<=+>/0?.@0=+@5>81.2@A5BC06; D.E24B>,6?.@4F602345, G>DH23 IIJ KLHMNOP<J KLQGR*J K9S*T 38M.-.@U;V????EE;<B:,U;VWWWWXX;Y5>/U;V??WWWW;ZY5>/U;V??WWWW; RY5>/U;VWWXXWW;J K[IIG\*S]R**IIJ K]SN7 >+4BU;?.@4F;J KMG\<GNJ K<R9YG9SN*GNU^MGYYHPRMO\_UFMGYYPR**O\_UW `O*<QU;aWW;JK<NJK<*J K<R9YG9SN*GNUbMGYYHPRMO\_UFMGYYPR**O\_UW `O*<QUFWWcJK<NJK<*J K]S\<HOdGU;;]RMGU;R@5+-;JK9JKMG\<GNJKQeJH+4f-BH,.E/ H2@AB1KLQeJKLMG\<GNJKL9JKL]S\<JKL<*J KR\R7GU;O,B4R>E=.@F;JKLRJ KL<NJKL<R9YGJ KQNJ K<R9YG9SN*GNUbMGYYHPRMO\_UFMGYYPR**O\_UW`O*<QUFWWcJ K<NJ K<*RYO_\UNO_Q<Jg\+4BhKL<*J K<*JKO\Pi<<TPGU;<Gj<;\R7GU;<:,\+4B;J KL<*J K<*RYO_\UNO_Q<JgGI7+5-hKL<*J K<*JKO\Pi<<TPGU;<Gj<;\R7GU;<:,G7+5-;JKL<*J KL<NJ K<NJK<*RYO_\UNO_Q<JRDD@B00hKL<*J K<*JKO\Pi<<TPGU;<Gj<;\R7GU;<:,RDD@B00;JKL<*J K<*RYO_\UNO_Q<JR8BhKL<*J K<*JKO\Pi<<TPGU;<Gj<;\R7GU;,:,R8B;JKL<*J KR\R7GU;O,B4R>E=.@F;JKLRJ KL<NJKL<R9YGJ K<R9YG9SN*GNUWMGYYHPRMO\_UFMGYYPR**O\_UW `O*<QUFWWcJK<NJK<*J KMG\<GNJ K]S\<HOdGU;;]RMGU;R@5+-;J KMG\<GNJ K<R9YG9SN*GNU;W;MGYYPR**O\_U;W;MGYYHPRMO\_U;W; `O*<QU;kbc;J K9NJKLMG\<GNJ KL]S\<JKLMG\<GNJKL<*J K<*J K]S\<HOdGU;;]RMGU;R@5+-;J KL<NJ KL<R9YGJ K<R9YG9SN*GNUWMGYYHPRMO\_UFMGYYPR**O\_UWJ K<NJ
12345678
FbX
4567897*+,-*+.-+/0
123
1234 12567869:38:;3412:4123 <57=>?;@29A@4 1B9?2 C=D8;@E@B5F8;@5GHIJ@4 1643KLMGHNKOPQGHRSKLTUKRTKVWKGHKRMK1X64 1XB9?24 1X234 1X2:4 1X256784 12567869:38:;34 12:4 123<57=>?;@29A@4 1B9?2 C=D8;@E@B5F8;@5GHIJ@4 1=?AY22ZA8;@:53=9@?5[8;@:8CY72\:I]HP6QTTPR^_@<57Y8;@:I]HP^ 3@4NK`HRRKG 1XB9?24 1X234 123<57=>?;@29A@4 1B9?2 C=D8;@E@B5F8;@5GHIJ@4 1=?AY22ZA8;@:53=9@?5[8;@:8CY72\:I]HP6QTTPR^_@<57Y8;@:I]HP^ 1@4HRTKGUK]HITK 1XB9?24 1X234 123<57=>?;@29A@4 1B9?2 C=D8;@E@B5F8;@5GHIJ@4 1=?AY22ZA8;@:53=9@?5[8;@:8CY72\:I]HP6QTTPR^_@<57Y8;@:I]HP^ E@4KVWKGT 1XB9?24 1X234 123<57=>?;@29A@4 1B9?2 C=D8;@E@B5F8;@5GHIJ@4 1XB9?24 1X234 1X2:4 1X256784 1X234 15?5[8;@=TKU5RMaPGb@41X54 1X2:4 1X256784 12567869:38:;3F877CA5F=?>;1F877A533=?>;34 12:4 1234 12567869:38:;34 12:4 1234 1B9?2 C=D8;@E@B5F8;@5GHIJ@4 1642OWKLPc=RSKLTUKRTLOPQUIdK1X64 1XB9?24 1X234 1X2:4 1X256784 12567869:38:;3412:4123 <57=>?;@29A@4 1B9?2 C=D8;@E@B5F8;@5GHIJ@4 1=?AY22ZA8;@Fe8Ff69g@?5[8;@:8CY72\FaKMd6PV^b@ <57Y8;@FaKMd6PV^3@4=R]HSH]QIJCTPMdL16:4 1=?AY22ZA8;@Fe8Ff69g@?5[8;@:8CY72\FaKMd6PV^b@ <57Y8;@FaKMd6PV^1@49WTHPRL16:4
)*+,-../,012340356782+9:012;0<-=.>3?@AB6CDEF2 G9=-0123?@AB6CDEH2I:JKJLMNJOPQ)6;I )*+,-../,012340356782+9:012;0<-=.>3?@AB6CDEF2 G9=-0123?@AB6CDER2I;@LM0QKLK@ )SN7+.I )S.TI )S.;I )S.96=0I )S.TI )9+9:012*K@U9OA?CVW2I)S9I )S.;I )S.96=0I ).96=067;T0;1X30==<,93*+Y1Z30==,9TT*+Y1XI ).;I ).TI ).96=067;T0;1XI ).;I ).T G9=*Y+12.7,2I )N7+. <*[012H2N930129V\LM2I )6I4C]PC^CJ_J^^CJVQKCABQ`)S6I )SN7+.I )S.TI )S.;I )S.96=0I ).96=067;T0;1XI).;I).TG9=*Y+12.7,2I )N7+. <*[012H2N930129V\LM2I )aEET;7,>T7b+>./,0EEI )<0=03.+9:012;0<-=.>;LP\C6JKKCOEW2I )7,.*7+I )S7,.*7+I )aEET;7,>T7b+>./,0+9:012;0<-=.>;LP\C6JKKCOEW2G9=-012;LP\CEX2E EI)7,.*7+IZc7OE=\O@)S7,.*7+I )aEET;7,>T7b+>./,0+9:012;0<-=.>;LP\C6JKKCOEW2G9=-012;LP\CEZ2E EI)7,.*7+IHc.CJA?.CO@.VLP\Od )S7,.*7+I )aEET;7,>T7b+>./,0+9:012;0<-=.>;LP\C6JKKCOEW2G9=-012;LP\CEH2E EI)7,.*7+IRc6VCB@V9QQ\QK@P )S7,.*7+I )aEET;7,>T7b+>./,0+9:012;0<-=.>;LP\C6JKKCOEW2G9=-012;LP\CER2E EI)7,.*7+IFc7K?@V)S7,.*7+I )S<0=03.I )SN7+.I )S.TI )S.;I )S.96=0I )S.TI )9+9:012*K@U9OA?CVe2I)S9I )S.;I )S.96=0I ).96=067;T0;1X30==<,93*+Y1Z30==,9TT*+Y1XI ).;I).TI ).96=067;T0;1X30==<,93*+Y1Z30==,9TT*+Y1XI ).;I).TI )N7+. <*[012H2N930129V\LM2I )6Ib?LK\Q^CJV?CKQKCABf\ABgCVK?\Q^@LV`)S6I )SN7+.I)S.TI )S.;I).;I ).TI
12345678
ZeZ
4567897*+,-*+.-+/0
123
12345 6789:;3;2<=9:;<>?@A;B 174CD55EC9:;59F5;4<G9:;H96DI5J5KLM2?KANO2;6789:;PQ; G<FI94R5S:;PQ;B 1T2345B 1T5UB1T5HB 1T5<VI9B 1T5UB 1<4<G9:;7MKW<XYZ[>\;B1T<B 15UB 15<VI9V3HU9H:Q=9II6C<=74R:1=9IIC<UU74R:QB15HB15UB 12345 6789:;3;2<=9:;<>?@A;B 1VB6M[Y]6^W_[A?`^[a]X[b?M1TVB 1T2345B 1T5UB 1T5HB15HB 15UB 12345 6789:;3;2<=9:;<>?@A;B 174CD55EC9:;59F5;4<G9:;H96DI5J5KLM2?KANO\;6789:;c; G<FI94R5S:;c;B 1T2345B 1T5UB1T5HB 1T5<VI9B 1T5UB 1<4<G9:;7MKW<XYZ[>d;B1T<B 1T5HB 1T5<VI9B 15<VI9V3HU9H:Q=9II6C<=74R:1=9IIC<UU74R:QB 15HB15UB 15<VI9V3HU9H:Q=9II6C<=74R:1=9IIC<UU74R:QB 15HB15Ue<I7R4:;V3553G;B 12345 6789:;3;2<=9:;<>?@A;B 1VB<X^7XfKgMWKXM<Nf?YK`[>[MZK>gh1TVB 1T2345B 1T5UB 1T5HB15HB 15UB 12345 6789:;3;2<=9:;<>?@A;B 159F5<H9<4<G9:;H96DI5J5KLM<>K@Od;H3i6:;\;=3I6:;Pj; iH<C:;6325;B1T59F5<H9<B 1T2345B1T5UB1T5HB 1T5<VI9B 1T5UB 1<4<G9:;7MKW<XYZ[>k;B1T<B 1T5UB1T5HB15HB15UB 1T=9459HB 1T5UB1T5HB 1T5<VI9B 1T5UB1T5HB 1T5<VI9B 1T=9459HB 1VHB 1=9459HB 174CD55EC9:;6DVG75;4<G9:;YWNJga_W?M;e<ID9:;6a_W?M;B 1T=9459HB 1T23HGB 1TV3UEB
)*+,-./
12345678
01243456575585299:
;< =>?@ABCD>EFGGFH@BAH>IJKA>H@CDKGGLKG@MKC@FB?KBMNOBC@P>>QQFQ DKBMG@BAR S< TOJJF?>UVFODKW>M>W>GFJ>M?FP>EQ>>HKQ>KBMOJGFKM>M@CCFCD>XBC>QB>C<
Y>EFQ>MFHBGFKM@BACD>?FECHKQ>UCD>O?>QDK?CFE@GGOJKBM?OIP@CKB@BCQFMOZCFQV EFQP<=>?@ABCD>EFQPK??DFHBH@CDWKG@MKC@FBFECD>@BJOC?[0\92386]^_`
a`bb 3cddef4
XBCD@?OB@CVFODKW>G>KQB>MDFHCFZQ>KC>g>IJKA>?CDKCO?>LYTZQ@JC<hFODKW> G>KQB>MCFKMMGFA@ZCFVFOQg>IJKA>?K?H@CDKBVFCD>QJQFAQKPP@BAKJJG@ZKC@FB< hFODKW>KG?FG>KQB>MiIj>ZC?OJJFQC@BLYTZQ@JC<iB>FECD>W>QVZFPPFBKBMFEC>B O?>MFIj>ZC?UCD>=@ZC@FBKQViIj>ZCDK?I>>BM@?ZO??>M@BM>CK@G<LKG@MKC@FB?EFQPKB @PJFQCKBCJKQCFEEFQP?UHD@ZDDKW>I>>B?DFHB@BPKBVFECD>>kKPJG>?@BCD@?OB@C< hFODKW>KG?FG>KQB>MDFHCFO?>CD>lQQFIj>ZCEFQDKBMG@BANOBC@P>>QQFQ?<hFOH@GG BFHI>KIG>CFM>W>GFJg>IJKA>?G@m>lBnO@QVEFQP?UKMP@??@FBEFQP?KBM?FFB< hFODKW>G>KQB>MKIFOCCD>M@EE>Q>BCFJ>QKCFQ?KBMMKCKCVJ>??OJJFQC>MIVLYTZQ@JC KBMDFHCFO?>CD>P<hFODKW>G>KQBCKIFOCEOBZC@FB?KBMJQFZ>MOQ>?UKBMDFHCF PKm>VFOQJQFAQKP?PFMOGKQO?@BACD>P<oFM@BAZFBW>BC@FB??DFOGMI>EFGGFH>M@B FQM>QCFPKm>VFOQJQFAQKP?Q>KMKIG>KBM>K?@GVOBM>Q?CKBMKIG>IVFCD>Q?<,D>?> @BZGOM>@BM>BCKC@FBFECD>ZFM>UBKP@BACD>WKQ@KIG>?KBMZFB?CKBC?KBMFCD>Q EFQPKCC@BAZFBW>BC@FB??OZDK?CDF?>EFQZFPP>BC?<
a`bp 3qrcstqu3veu3wxf3 01243456575585299b
;< ,D>EFGGFH@BAZFM>H@GGMFCD>jFIR )ToNXy,.z{|}z|l~WI?ZQ@JC/ ) ;
4567897*+,-*+.-+/0
123
1234567389:;6<=>95;? 95;@5;6<>95;? A6<BC3D45; BC3@5;2= 45;@1 6E>4635>95;?F1?5G=3 89:;6<=@EHC9= =I65E2345673 =3J6E 6E>4635>95;?@17;4635>95;?@K7;4635>95;?@L?5G=3 89:;6<=@5;2= =I65E2345673 =3J6E E7;45;@4635>95;?M157K95=NM1 6E>4635>95;?<7J>45;?@O?5G=3 BC3@EHC9= =3J6E 3=I5 89:;6<=@BC3 P3J12345673 1234567389PQ=3>95;? 95;@5;6<>95;? 6E>95;@ROR?5G=3 89PQ=3@5;2= =I65E2345673 =3J6E 6E>4635>95;?<7J>K?@O?5G=3 89PQ=3@5;2= =C9= 89PQ=3@EHC9= =3J6E P3J12345673 S2B<H63>? 95;@5=I51TQHC2= A6<BC3PQ=3DBC3:;6<= 6E375>6932<=;64>95;??5G=3 <9UB7IRV7532<=;64R =I6592B =3J6E 6E>89PQ=3>95;??5G=3 <9UB7IRPQ=3R =C9= <9UB7IRWJJR =3J6E 6E>89:;6<=>95;??5G=3 <9UB7IRN;6<=R =C9= <9UB7IR375N;6<=R
)*+,.*+/01 2 33445 63/789:;5 <= >?)@A)-BCCBD,*E-0*F@,B*@BE)*)GH@)@A)-,1B**HFF,?)G,)?= T>U7;9VU-,1W*X ,-WUYZXBGWUY[X@A)* T,1Y[ .C?)T,1YT,1WU4[X\T,1WU4<X .U]9.U]T>U7;9VU ^= >?)@A)-BCCBD,*E-0*F@,B*@B-,*+@A)-HF@BG,HC T0*F@,B*THF@BG,HCW*X ],S, 9-*6Z;A)* THF@BG,HCYZ ._,@T0*F@,B* .*+9THF@BG,HCY[ TBG,Y<;B* THF@BG,HCYTHF@BG,HC`, U)_@ .*+T0*F@,B*
12345678 IJKKLMNO9@DB0C+1)1)@@)G@BE,P) +G,P)GFB+)?B@AH@@A)?FG,Q@FH*1) FA)FR)+B0@=;A)?HS)ABC+?-BGB@A)G H*?D)G?H?D)CC=
abc4defg5h5fi5cjjk
[= 6l;mn5 6l.o]5 6m.;oUom.Ypq.U.8o;V8p7B*@)*@Ypm,FGB?B-@r,?0HC/@0+,B s=Zp5 6;9;n.563;9;n.5 6/789:;noUq>oq.YP1?FG,Q@5 6t44 T0*F@,B*9?:G,S)W?@GX ?@GY@G,SW?@GX ],S1C*uF@G 1C*Y@G0) F@GY[ ,-WF,*@W?@GX6[X@A)* 9?:G,S)Y-HC?) )_,@-0*F@,B* )*+,,-WF,*@W?@GXY[BGF,*@W?@GXY<BGF,*@W?@GXY^X@A)* 9?:G,S)Y@G0) )_,@-0*F@,B* )*+,-BGF@GYF,*@W?@GX4[@B<?@)Q4[ ,-WF,*@W?@GXSB+WF@GXYZX@A)*
[sv
34567869*+,9*-,*./
122
012345167 72894 27:; <6=>9?73012 @28AB2C;9D2 AB2C;9D2<6@E72F6;>G 6;>3;>9?F6;>G 94F6;>3HIHG;J72 <6@E723;>B7 7:9;4B2C;9D2 72894 94FC92;F6;>G?D8FKG3IG;J72 <6@E723;>B7 7167 <6@E72345167 72894 @28AB2C;9D2 LB0?M6B0FG 6;>3;7:;1NE51B7 942D;F962B?7>9CF6;>GG;J72 ?6O0D:HPD;2B?7>9CH 7:9;6B0 72894 94F>58FIGNCJ7CQ78G;J72 94F<6@E72F6;>GG;J72 ?6O0D:HR769;967E72H 7167 ?6O0D:HPD9;962D;7E72H 72894 @:9;6B0 72894 94F>58F1GNCJ7CQ78G;J72 94F<6@E72F6;>GG;J72 ?6O0D:HPD9;962D;D88H 7167 ?6O0D:HR769;96D88H 72894 @:9;6B0 72894 94F>58FKGNCJ7CQ78G;J72 94F<6=>9?7F6;>GG;J72 ?6O0D:HR769;965S>9?72B?07>H 7167 ?6O0D:HPD9;962D;5S>9?72B?07>H 72894 @:9;6B0 72894 @28LB0
))**+ ,)-./012+ ,)3456+ ,7869+ ,1+ 4:;< ,0=1>2?@A;BCDEFG<DH;BICDEIJK;JL;E:DMN;BI;:;<I+ 8EE ,0=1>2?@A;BCDEFG<DH;BICDEI:DMN;BIGEEI+ 1CFH; ,0=1>2?@A;BCDEFG<DH;BICDEI:DMN;BIACFH;I+ ,)1+ ,1+,0=1>2FEB?;O?P<DH;B?;O?P+,)1+ ,1+,0=1>2FEBQN??G<P?@A;BQN??G<:DMN;B7N??G<<DH;BQN??G<P R5=S>5S4BTD:DUJCFA?G<JMFJLBIH@UNQVWI+,)1+ ,)7869+ ,)32XR+ YZ [GMMG\F<]FU?K;JGE;^ [N<J?FG<0U1DMF<ECGH;VU?CW 6FHF-?DC?_F4<E_J?C_QM<1DMF< U?CB?CFHVU?CW QM<1DMF<B?CN; F4<EBM;<VU?CW F.<?BCGN<EVF4<E)YW F-?DC?BP `GCJ?CBP?GJF<?VF.<?W F`VHFEVU?C_F4<E_PW,+HFEVU?C_F-?DC?_PWW?K;< 0U1DMF<ECGH;B`DMU; 4OF?[N<J?FG< ;<EF` F-?DC?BJF<?VF-?DC?WaP F4<EBJF<?VF4<EW*P <;O? F`VQM<1DMF<B?CN;W?K;< 0U1DMF<ECGH;B?CN; ;MU; 0U1DMF<ECGH;B`DMU; ;<EF` 4<E[N<J?FG< -NQQMD<L-?CVW U?CB?;O?PZ:DMN; F`V?CFHVU?CWBIIW?K;< HU]QGOI1MUZ;<?;CD<NHQ;CI ;OF?UNQ ;<EF` F`V0U1DMF<ECGH;VU?CWW?K;< HU]QGOI9;UI ;MU; HU]QGOI=GI
12345678
Pbc
4567897*+,-*+.-+/0
12345 623789
:;/5<=>.6?6>+6/00@
1A BCDEFG BCHG IJK1LM1K4N2JO19PJN1OQ4RQRS2TJ42KTQ1UV7RW4PT8K135SW RJXR8XJT42NK89TSTJXKY TJZ1KY34KRS82TKJ23TSTJXKJKO1XXJKRS318K13TS[JX43JT18K1W 42P8TAB\CHG BC6]MG BD^DF6GUV7RW4PTLIJK17T83_B\D^DF6G B7I`^aDF]bcd]c6efUV7RW4PTfG Bghh]33TQ4KTS42KTW8RT2S2h^69WSOK1WKTSKi4PS[1WUV7RW4PTjS38X1KA kPT4S26ZPX4R4T 789Rj3IJXR8XJT1lk2IX4Ri M4j]jS82TS5M4KRS82T M4j]jS82TS5DJZ M4jM^7IkdbDlF^E^D M4jM^7IkdbDl`]D6 M4j789TSTJXV15SW1 M4j789TSTJX]5T1W M4jD]ml`]D6 M4jDSTJXISKT ^5nF12nMSR8j12TA5WjIJK17T83_ATZTo8J2T4T_AUJX81peqpDQ12 EKNVSZfrS8j8KT12T1WJs8J2T4T_Af 6Z4T789 623^5 ^5nbST^Kb8j1W4RnMSR8j12TA5WjIJK17T83_ATZTo8J2T4T_AUJX81ppDQ12 EKNVSZfo8J2T4T_j8KT91J28j1W4R[JX81Af 6Z4T789 623^5 ^5nF12nMSR8j12TA5WjIJK17T83_ARj9aWS38RTKAUJX81peqpDQ12 EKNVSZfrS8j8KTK1X1RTJPWS38RTAf 6Z4T789 623^5 M^7IkdbDlF^E^De1qqq M^7IkdbDl`]D6eA1q D]ml`]D6eqAq2 tIJXR8XJT1TQ1K89TSTJX5SWTQ1SW31WA 789TSTJXV15SW1eMSR8j12TA5WjIJK17T83_ATZTo8J2T4T_AUJX81u MSR8j12TA5WjIJK17T83_AX9Xd24TISKTA[JX81
123
^5n789TSTJXV15SW1GM^7IkdbDlF^E^DpDQ12 ]jS82TS5M4KRS82Te789TSTJXV15SW1uM^7IkdbDl`]D6 6XK1 ]jS82TS5M4KRS82Teq
)*+,./0121345-1678./01213496-276:5;2/*12-<=>?2/*1 @A34?/431613B6>3*+12134?2>1C 5;2/*12-D3B8./0121345-167ED5FGH5D) D2134A2>18./0121345-167I5;2/*12-D3B @<=>J43K1L676>/41>C <2?/;6*1C-7;A3>6.1/+KC404./01213496-276CM34/68./01213496-276 <2?/;6*1C-7;A3>6.1/+KC404<=>?2/*1CM34/685;2/*12-<=>?2/*1 <2?/;6*1C-7;A3>6.1/+KC404./0121345-167CM34/68./0121345-167 <2?/;6*1C-7;A3>6.1/+KC404D3B6>CM34/685;2/*12-D3B <2?/;6*1C-7;A3>6.1/+KC404D2134A2>1CM34/68D2134A2>1 )*+./0 ./0?;+./0;=1G2*A4=?N @./0;=11L=>27+67-27J72?6>>=*OC P>O92BQR2/727+67L3>066*>/0;=116+CQ <2?/;6*1C-7;A3>6.1/+KC./0;=1 )*+./0 ./0?;0S72+/?1>G2*?L3*O6TU .646?1A3>6<2?/;6*1C-7;A3>6.1/+KC?;0S72+/?1>C.646?16+,*+6B A3>6V <2?/;6*1C-7;A3>6.1/+KC404W*=1A2>1CM34/68VXYZ A3>6[ <2?/;6*1C-7;A3>6.1/+KC404W*=1A2>1CM34/68\\Z A3>6] <2?/;6*1C-7;A3>6.1/+KC404W*=1A2>1CM34/68VY^Z A3>6)4>6 <2?/;6*1C-7;A3>6.1/+KC404W*=1A2>1CM34/68Z )*+.646?1 )*+./0 ::_ `a.AH,SD_ `ab)5<_ `9c<R_ `dcHP e5P)8Q-7;A3>6.1/+KQ_ `D59f)_ `DH_ `D<_`9_P2*=127g`a9_`aD<_ `D<_ `.)f)ADe5P)8Q?;0S72+/?1>Q_ `cSD,ceh5fW)8QZQ_`acSD,ce_ `cSD,ceh5fW)8QVQ_,16;V`acSD,ce_ `cSD,ceh5fW)8Q[Q_,16;[`acSD,ce_ `cSD,ceh5fW)8Q]Q_,16;]`acSD,ce_ `a.)f)AD_ `aD<_ `aDH_ `DH_ `D<_`9_i/3*1=1Kg`a9_`aD<_ `D<_
12345678
VjY
4567897*+,-*+.-+/0
123
12345667489:68;6:3<=89:>?>@ABC>D>E:F 1G6HF 1G6IF 16IF 16HF12345667489:JA>>KC:3<=89:LMNOBPLAPB>Q: R<S589:OBPLAPB>Q OKT>:F1G6HF 16HF1G6HF 1G6IF 16IF 16HF1JF5CD>OKT>U1GJF1G6HF 16HF 12345667489:68;6:3<=89:PVP5CD>OKT>:F 1G6HF 1G6IF 16IF 16HF1JFWAV>K>BPVQXKYQNDTLKAC>U1GJF1G6HF 16HF 12345667489:68;6:3<=89:PVPWAV>K>BPJQXKYQ:F 1G6HF 1G6IF 16IF 16HF1JFHDTLKAC>U1GJF1G6HF 16HF 12345667489:68;6:3<=89:PVPHDTLKAC>:F 1G6HF 1G6IF 16IF 16HF1JFWAV>K>BPBX>QYNDTLKAC>U1GJF1G6HF 16HF 12345667489:68;6:3<=89:PVPWAV>K>BP<X>QY:F 1G6HF 1G6IF 16IF 16HF1JF6B?QTU1GJF1G6HF 16HF 12345667489:68;6:3<=89:PVP6B?QT:F 1G6HF 1G6IF 16IF 16HF1JF6K>BPOKT>U1GJF1G6HF 16HF 12345667489:68;6:3<=89:PVP6K>BPOKT>:F 1G6HF 1G6IF 16IF 16HF12345667489:JA>>KC:3<=89:LMNWAVMD>: R<S589:WAVMD> ZYNQY:F1G6HF 16HF1G6HF 1G6IF 1G6<JS8F 1G[ZI=F 1GJZH7F 1G\6=SF
)* +,-./0 +,1230 +-4-/10256789:;<=>?@A>BC@:=<:C8DE<B>+F-4-/10 +F,1230 +5W3X5Y6W/WAZ[,4-10+61\-1A0 +]W\-74^1Z_]261Z`2=C<Q`6W/WAZ5/a10256+F]W\-0 +]W\-74^1Zb6W/WAZ5/26c0A>BC@:=<:C8D+F]W\-0 +F61\-1A0 +,A6W/WAZ`5/a1`0 +]W\-]261Z`6W.467<D@.7`0-N<DdR8U98=:<dCDB:N>:CS>:8 O8;DQ8<O<DO:>@:8U=D>;P=8OUV:*4D8=O>=:8@>=e>R8U;>QQf;><@d:N<:R8U @UTSC::N>98QQ8;CDBCD98=S<:C8DT>98=>O8;DQ8<OCDB +]W\-]261Z2A42/6W/WAZ5/a10256+F]W\-0@89:;<=>* +,A6W/WAZA13[43-,Z_bg0+61\-1A0 +-25/15WA31A5WA31A6W/WAZ`5/a1`0 +-A0 +-32/4Y\ZA4Y,-0h\<S>i+F-30 +-30+4\Ea--XE1Z`-1j-`\2.1Z`-k:\<S>`0 +F-30 +F-A0 +-A0 +-32/4Y\ZA4Y,-0h1l.<CQi+F-30 +-30+4\Ea--XE1Z`-1j-`\2.1Z`-k:1.<CQ`0+F-30 +F-A0 +-A0+-32/4Y\ZA4Y,-02OO=>@@i+F-30 +-30+4\Ea--XE1Z`-1j-`\2.1Z`-k:2OO=>@@`0+F-30 +F-A0 +-A0 +-32/4Y\ZA4Y,-06C:Ri+F-30 +-30+4\Ea--XE1Z`-1j-`\2.1Z`-k:6C:R`0+F-30 +F-A0 +-A0 +-32/4Y\ZA4Y,-07:<:>i+F-30 +-30+4\Ea--XE1Z`-1j-`\2.1Z`-k:7:<:>`0+F-30 +F-A0 +-A0 +-32/4Y\ZA4Y,-0^CPi+F-30 +-30+4\Ea--XE1Z`-1j-`\2.1Z`-k:^CP`0+F-30 +F-A0 +-A0 +-32/4Y\ZA4Y,-068UD:=Ri+F-30 +-30+4\Ea--XE1Z`-1j-`\2.1Z`-k:68UD:=R`0+F-30 +F-A0 +-A0 +-36W/7E2\Z)2/4Y\Z61\-1A0+4\Ea--XE1Z`7a5.4-` \2.1Z`5:Dm`n2/a1Z`7>DO4:o`0+5A0+]W\-74^1Z)0hA>pUC=>O ]C>QO+F]W\-0+F-30 +F-A0 +F-25/10 +,A6W/WAZA13[43-,Z_bg0 +]W\-74^1Z)0-N<Dd@o+F]W\-0 +76A4E-/2\Ya2Y1Z`n57V=CP:`0 +oll 7UT5:DmqWD6QCVd 49-k:\<S>*n<QU>Z``W=-k:1.<CQ*n<QU>Z``-N>D 3CS.R.>@@<B> .R.>@@<B>Z`EQ><@>>D:>=R8U=D<S><DO>lS<CQ<OO=>@@*`
12345678
GHIIJKLM-NC@OC@PQ<R@:N>98=STU: O8>@D8:@N8;>==8=S>@@<B>@*EQ><@> V8==>V:*
m_m
4567897*+,-*+.-+/0
123456171822938:;:<=>?5@AB8C8D5E@FEE5E< F>G=H F>GIJKLLM NOIPQ=RSM NO4TUVM NOWS1XM
YZ[\ ]^_`ab__bcdefg4
1h ijklmnmopqrslntuK7R9JBX5@96hRJKBv2w8ExTyQ8vBB7hV89Ex3;;1 3h zm{ukmupqrslntuK7|B86W5@8E:U9EE8>}vBBhRJKBv2w8Ex~E56RE822=>?RJKh V89Ex3;; h pq{slntu lu j l n j j K7R9JBSwJEE5CC: 5B9>W82C8EhRJKBv2w8Ex R89?wAvCRE822hV89Ex1 h jks l{j p {slntunm k {K7 8vCw4E5Aw7:Sv@5Cw7 58C2hRJKBv2w8Ex I9@2RJKBv2wv>3h789Ex1
123
0123$5678$95*$+,--3./$
-010.2$
$
345$67879:$:4;<$=>7<:;?@A$$B47$C7@>$D6;E7@$896:$;<$@?:$:47$86;C965$F?G><$?F$:47$<7G:;?@$ H?@7$I5J$$B47$=>7<:;?@$D?7<$@?:$<;H@;F;G9@:K5$D;FF76$F6?C$=>7<:;?@$L$?F$MNO$LJ$ 0123$5678$9P*$+,--3./$ -010.2$ $ B4;<$;<$F;@7$;F$:47$<:>D7@:<$49E7$D?@7$OQRS$796K;76J$$T:476U;<7$:47$67F767@G7$:?$OQRS$G9@$ I7$D7K7:7DJ$ $ $
$
9)*+, 1-./01./2.342564523
;<= >?@ABCDE@FB? ;<G JKLME@FNMO ;<P QOF?RSAMTUVMTNMA ;<I WAMT@MTXF@MYBUMZTRM ;<[ SMOFR?TZTRMF?\T]BD@^FMV ;<_ >?OMA@>UTRMO ;<; >?OMA@aMb@ ;<H cBAdF?X@T?CTAC^FMV ;<` ^FMV@eMXF@MfFgMO ;<h \F?diBDASBEDUM?@O ;<G= XBgD@FB?Ojk?OVMAO
,:l *)+-m19n+*m)
12345634732
7483)9: GHI GHI GHI GH; GHH G`I G`; G`H G`h Gh= GhP
kcMKOF@MFOTOM@BogF?dMCCBEDUM?@OVF@eOeTAMCT@@AFKD@MOpODEeTOAMgT@MC@BqFEOp TOFUFgTACMOFR?pBATOeTAMCqDAqBOM<rTEABUMCFTSAMTUVMTNMAFOTOF@MEAMT@FB? T?CUT?TRMUM?@@BBgpOB]BDET?DOMF@@BEAMT@MEBUqgM@McMKOF@MOpF?TCCF@FB?@B F?CFNFCDTgCBEDUM?@O< sM@@F?RO@TA@MCF?rTEABUMCFTSAMTUVMTNMAFOTOMTO]TOBqM?F?RT?MbFO@F?RYar\ CBEDUM?@BAEAMT@F?RT?MVB?M<SAMTUVMTNMAFOTqABoMOOFB?TgcMKOF@M CMNMgBqUM?@qABRATU<>@eTOKMM?CMNMgBqMC@B@TdMTCNT?@TRMBo@eMETqTKFgF@FMOBo @eMgT@MO@RM?MAT@FB?BoKABVOMAOpUTdF?RF@MTO]oBACMNMgBqMAO@BDOMTCNT?EMC oMT@DAMOODEeTOO@]gMOeMM@OT?CC]?TUFEYar\<>@eTOKMM?CMOFR?MCoABU@eM RABD?CDq@BVBAd@eMVT]qABoMOOFB?TgcMKCMNMgBqMAOjCMOFR?MAOCB<SAMTUVMTNMA OqMMCODqOF@MEB?O@ADE@FB?T?CO@AMTUgF?MOOF@MUTF?@M?T?EM< aeFOD?F@VBDgCKMNMA]EB?EFOMF?F@OCMOEAFq@FB?Bo@eMoMT@DAMOBo@eMEBUqB?M?@OBo SAMTUVMTNMA<aBMgTKBAT@MB?MNMA]@eF?RVBDgCKMTNBgDUF?BDO@TOd@eT@UMAF@OT oDggKBBdoBAF@OMgo<YBVMNMAp@eFOD?F@VFggF?@ABCDEM]BD@B@eMMOOM?@FTgMgMUM?@O< aBRM@@eMUBO@BD@Bo]BDASAMTUVMTNMAMbqMAFM?EMp]BDOeBDgCD?CMAO@T?C@eM KTOFEEB?EMq@OKMeF?C@eMSAMTUVMTNMAVBAdTAMTT?Cd?BVeBV@BEeBBOMBq@FB?Op DOMF?OqME@BAOT?CqT?MgOpT?COM@qAMoMAM?EMO@eT@KMO@oF@]BDAVBAdO@]gM<
,:t muv.n+*2.3
ko@MARBF?R@eABDRe@eFOD?F@]BDVFggKMTKgM@Bw x Q?CMAO@T?CVBAdTAMT x XM@Dq@eMXF@MX@ADE@DAM x SMOFR?TqTRMF?gT]BD@NFMV x kCCEB?@M?@O@BcMKOF@M x >?OMA@FUTRMOj@TKgMO@BTcMKqTRM
,:y 93*)z1-./01./2.-
192{/234 \M@DOO@TA@VF@eTKAFMoBNMANFMVBo@eMSAMTUVMTNMAVBAdTAMT<>o]BDeTNM?|@ TgAMTC]gTD?EeMCSAMTUVMTNMApCBDKgM}EgFEd@eMSAMTUVMTNMAFEB?B?]BDACMOd@Bq @BCBOB< ceM?]BDgTD?EeSAMTUVMTNMAp@eMoBggBVF?RVBAdTAMTF@MUOBqM?Dq<aeM SAMTUVMTNMAVBAdTAMTTEEBUUBCT@MOCFooMAM?@O@]gMOBoVBAdF?RT?CgMNMgOBo GHI
123456478)*78+*8,-
./0.1234.5678.9:;<.2=88;42:>.?2:@.9A:=1?=7?:2B.14B:128;24C9:;>3<B2D3@. 2:E:1@37=2:2=DD9AD=7@40=8.5FB.G3<;1.A.D:E4B:E4?3GG.1.728:>0:7.724:G2B. E:1@=1.=5
H FB.I:8;>.72E37?:E?340D=942B.8;11.72?:8;>.72=49:;81.=2.=7?.?32325 H FB.6AJ.8240=7.D8:72=37438:749:;8D38@2:374.12:AJ.824379:;1?:8;>.72C =7?2:8B=7<.2B.E=99:;E:1@37=?:8;>.725 H I1.=>E.=K.101:K3?.4>=79GD:=237<0=7.D4C4;8B=42B.LFMNO29D.40=7.D=7? 2B.P:?.3740.82:1CEB38B.7=AD.9:;2:E:1@E32B:2B.1I1.=>E.=K.1.D.>.7245 H FB.N=;78B.1A=18:72=374A;22:74G:1:0.737<=7?8D:437<9:;1>:42G1.Q;.72D9 ;4.?3740.82:14=7?0=7.D45 H FB.R1:0.1293740.82:1?340D=9401:0.123.4G:12B.4.D.82.?:AJ.82:12./2C=7?D.24 9:;>:?3G92B:4.01:0.123.45STUVWUXYZX[Y\V[]^XX[^YV_\U[V_]X[W\ZY`[X[_`] Z_\U[Zab[W\^W\Vc[de][d[W\[`V_\U[`ZWfg[_\hi j:;E:;D?A.E.DD=?K34.?2:8D:4.=DD2B.GD:=237<0=7.D=7?:023:74A:/.48D;22.137< ;02B.E:1@=1.=A98D38@37<:72B.k:72B.2:013<B28:17.1:G2B.A:/.45F::0.7 I1.=>E.=K.1l4E37?:E4C3740.82:14C=7?0=7.D4C;4.2B.m37?:E>.7;5n8B.8@ >=1@7./22:=732.>372B.m37?:E>.7;37?38=2.42B=22B.7=>.?32.>348;11.72D9 :0.7S2B:;<B32>=9A.B3??.7A.B37?:2B.1E37?:E4i5F:?340D=9=732.>2B=2347l2 8;11.72D9:0.7C8B::4.2B.32.>7=>.G1:>2B.>.7;:1;4.324@.9A:=1?4B:128;25 op3q47847r3,*st,*u,3 N.2;47:E42=12:;1J:;17.9372:2B.1.=D>:GI1.=>E.=K.15m.A.<37E32B29037< 37=G.E2.42D37.437:;1I.43<7K3.E5O..B:E:;1E:1@=1.=B=4A..7?3K3?.?372: 2E:E37?:E4C:7.?340D=937<:;12./2=7?2B.:2B.1?340D=937<2B.8:11.40:7?37< LFMN8:?.5
vwx
12345634732
9)*+,-+. /+0-12 ,-+. /3+45.+46+3742*-0894:4*)7;5+2<-2<=3++.4:0> ? 404/+0-126-+.@ ? 4049)*+6-+.@42* ? 404089-<6-+.<=4<0=).0A)<=<=+*+0-1242*<=+BCDE7)*+F
9)*+6-+.
/+0-12 ,-+. 9)*+G*+0-126-+.
HIJKLMNOPQLPRSPTSNTLSKLUJVMWPTJWXSNOYZP[PKQMRSPTSNQLP\WPM]TPMRPW QJJ[^MWF_`:*+a4;9<@/3+45.+46+3*-0894:0<=+/)7;5+2<.-2*).-2/+0-126-+.F b);.);9*A+.)3c-215)0<)a<=+<-5+-2<=+*+0-126-+.42*8+3a)3547<-)200;7= 407;<<-21@840<-21@-20+3<-218-7<;3+0@<4A9+042*0))2Fd)37=421-21)349<+3-21<=+ BCDEG073-8<-210-*+@:);=46+<).)3c-27)*+6-+.F e24**-<-)2@:);742.)3c.-<=/3+45.+46+3f0/+0-126-+.-2<.)*-aa+3+2<.4:0g -2<=+h4ijkl7m3642*nl4op42p7m36FHqJVZP[PKQQLPZPRSPTZSNQLPrSPTKMQPOJWU JsQLPt^uPKQZvMNP[w_e2<=+E4:);<6-+.:);742*+0-124841+94:);<@-20+3< 1348=-70@<+x<@42*)<=+35+*-4Fe2<=+y<42*43*6-+.@-24**-<-)2<)-20+3<-21 1348=-70<+x<42*5+*-4@:);742490)-20+3<94:+30@73+4<+a345+*)7;5+2<0@73+4<+ <4A9+0@42*4889:)<=+37=421+0<):);3841+g)8<-)20<=4<43+2)<464-94A9+-2<=+ E4:);<6-+.Fe2<=++x+37-0+@:);.-990++=).<)*+0-12z+A841+0-2<=+94:);< 6-+.a)99).+*A:<=+0<42*43*5)*+F n3lk{l|3nml3nl2k}lk23 y<3;7<;3-21<=+z+A0-<+-0<=+a-30<0<+8<).43*0A;-9*-21<=+7)38)34<+z+A0-<+F y<3;7<;3-21-279;*+073+4<-214a)9*+3@.=-7=-279;*+0499);38-7<;3+a-9+0@<+x<a-9+0 42**4<4A40+a-9+0-2<=+-33+08+7<-6+a)9*+30-279;*+*-2<=+54-2a)9*+3@.=-7=490) -279;*+0<=+=)5+841+F C)A+<<+3;2*+30<42*<=+7)27+8<)ay<3;7<;3-21<=+z+Ay-<+@:);7);9*;0+<=+ /3+45.+46+3<;<)3-49a-9+<=4<-0843<)a<=+847c41+Fe2/3+45.+46+3f054-25+2; 7=))0+y-<+~ 8+2y-<+@<=+20+9+7<C;<)3-49 /3+45.+46+3FC=+C;<)3-49 /3+45.+46+30-<+9-2c0<)<=+ j5{4 nml3a-9+09)74<+*-2<=+/3+45.+46+3 GC;<)3-49a)9*+3F a<+30+9+7<-21<=+9)7490-<+@0c-8<)<=+93+4<+C=+y-<+B)5+ 41+ 0+7<-)2)a<=+/3+45.+46+3<;<)3-49F
123456478)*78+*8,-
./0 12345356317536893:4;3
<=>?@A?ABC?DB?EFG?FEDCBBD?FHI=EB?=ECJKHAKDBAJLABBD?BI=E?@DM=NHABBBC?DO P=FQRRGEDA?D?@DICEB?HAKDSA@=NDHAKDI=E?@DBC?DTUBP=FVFCRL?@CBHAKDOP=FQRR ALLCNAKDBO?DW?OAJLXRAB@ABBD?BYP=FEL=GFNDJ?>CRRG=J?ACJ?@DBANDLDBCKJ G=NH=JDJ?BAB?@DG=NHRD?DLM=NHABB@=NDHAKDT 1*Z,[\+3]\2+^,76 _DKCJVPBA`CJK?@DL=GFNDJ?P=FQED>=EaCJK=JT bT cDA`D?@DdC?D>CJL=>=HDJOAJLGRCGa?@De=GFNDJ?>CJL=>?=NAaDC? AG?C`DT f@DdC?D>CJL=>EDNACJB=HDJCJ?@DVAGaKE=FJLT gT M@==BDXCRDhdA`DT iT jJ?@DdA`DUBLCAR=KV=WOBDRDG??@DM=NHABBkdC?DI=RLDEAB?@DR=GA?C=JI=E ?@CBL=GFNDJ?T lT jJ?@DXCRD<ANDICDRLO?PHDNPkM=NHABBm=NDT@?NRT nT MRCGadA`DT <=?CGD?@A??@DL=GFNDJ?JANDJ=>AHHDAEBA??@D?=H=I?@De=GFNDJ?>CJL=>T
],o47,6p,]\2+^,76:*8,546q, f@=FK@?@DL=GFNDJ?@ABAICRDJANDOJ=?CGDC?CBB?CRRRAVDRRDLrJ?C?RDLe=GFNDJ?Y ?@A?CBVDGAFBDC?JDDLBAJmfscL=GFNDJ?JANDO=EHAKD?C?RDTeDICJCJKAHAKD?C?RD @DRHBBC?D`CBC?=EBCLDJ?CIP?@DHAKD?@DPAEDVE=>BCJKt?@DHAKD?C?RDAHHDAEBCJ?@D VE=>BDE?C?RDVAEAJLCJ?@DV==aNAEaRCB?TjIP=FGEDA?DAL=GFNDJ?>C?@=F?AHAKD ?C?RDO?@DL=GFNDJ?AHHDAEBCJ?@DVE=>BDE>C?@?@D?C?RDrJ?C?RDLe=GFNDJ?T jJ?@CBHAE?=I?@D?F?=ECAROP=FQRR?C?RDP=FEHAKDt buv
9) *+,-,-./0123.4,5+460571,+8.91-00:.;+.5<=00>?7@+A,-.,00>?7@+:4B, 7>@.76C8+:+?>.) /@.735.78.@B:,00>?7@7DD.7@:7?08.,-./0123.4,5+4605 E) F4,-.=+,>.A+.>69,CD.G03D7::H03.I7J.K,-.41>+1L+4,-./0123.4, 5+4605,0:..,-.D7J.,+,>.2D67,.6+4,-./0123.4,5+4605B:,+,>.?7@)
12345634732
M N78.C02@A+>.)
OPQ 1RSTUVWXWURTVYWZ[\]^TR_
`025+>>:,7@,C02@A+@:,D7J.5-+>.50@L+4J+4/@.735.78.@B:a7C02,8+.5)`025+>> >7C02,,-.D7J.746,-.4+4:.@,+37J.:746,.b,)=-.D7J.C02103D>.,.+4,-+: :.1,+040A,-.,2,0@+7>5+>>>00L:+3+>7@,0,-.D7J.?.>05)
_c2defY4gchi^e36 /@.735.78.@-7:,508+:27>6.:+J48+.5:jN,7467@68+.5746a7C02,8+.5)`02B>> :,7@,?C50@L+4J+4a7C02,8+.595-+1-7>>05:C02,06@75>7C02,1.>>:0@>7C02, ,7?>.:+4,05-+1-C02174766104,.4,:21-7:+37J.:9,.b,90@0,-.@3.6+7) F4,-+:D7@,0A,-.,2,0@+7>9C025+>>>7C02,,-.D7J.K+4,-.4.b,:.1,+04C025+>>766 104,.4,)kl41.C02B@.103A0@,7?>.5+,-,-.:.,50,7:L:9C0237CA+46+,.7:+.@,0766 >7C02,746104,.4,,0J.,-.@)m 9) F4,-.l?n.1,:D74.>91>+1L,-.a7C02,;+.5+104+A+,+:4B,7>@.76C:.>.1,.6)
=-.o.,,+4JN,7@,.6+4a7C02,;+.56+7>0J?0b7DD.7@:7466.:1@+?.:,-. a7C02,8+.50D,+04:) E) p.8+.5,-.0D,+04:9,-.41>+1Llq,01>0:.,-.6+7>0J?0b) M) F4,-.l?n.1,:D74.>246.@a7C02,40,+1.,-7,,-.a7C02,0D,+04:j/@75 a7C02,G.>>746/@75a7C02,=7?>.j7@.405787+>7?>.K,-.:.0D,+04:7@.4B, 787+>7?>.+4N,7467@68+.5) 1246Y4gchir3sst 9uu
123456478)*78+*8,-
./0123456789234:1/;<19=12345:8==>1/;=1234551?=8>53;8@7/85A8;8>7B/1<81> 3@1;3:4C8/5DEA7>51>F7>81>78<531::3CG=7>A7@234G<8G1<81>1CG=83@5A8G1B8 234H<8:<8157/B?8@3<8234?8B7/=127/B3451G1B8D 033F155A8@3==397/B>1CG=8=1234553B851/7;813@5A8G1B8=12345234H<8:<8157/B 7/5A7>>8:573/3@5A85453<71=DEA8<8H>1:8==@3<5A8I3CG1>>=3B3J151?=8975A5A<88 :8==>@3<>758/167B1573/?4553/>J1:8==@3<1/35A8<B<1GA7:J1/;151?=8@3<5A<88:8==> 5A1597==A3=;58K5D
L3497==;<1951?=8>1/;:8==>>7C7=1<535A7>=123451>23493<F7/234<;3:4C8/5D M7<>5J23497==;<191=12345:8==7/9A7:A23497==7/>8<55A8I3CG1>>=3B3D ND I=7:F7/5A8O3:4C8/597/;393@5A8C2PI3CG1>>Q3C8;3:4C8/553C1F85A8 ;3:4C8/51:5768D RD .@5A821<8/H51=<81;23G8/J3G8/5A8@3==397/B93<F1<81533=>S T EA8U?V8:5>G1/8=W:A33>8X7/;39YU?V8:5>ZJ9A7:A234H==4>8531;; 3?V8:5>53234<;3:4C8/5D T EA8[<3G8<527/>G8:53<W:A33>8X7/;39Y[<3G8<578>ZJ9A7:A23497==4>853 >85G<3G8<578>3<155<7?458>@3<3?V8:5>7/234<;3:4C8/5D.@5A8[<3G8<52 7/>G8:53<7>/H51=<81;28KG1/;8;J:=7:F5A88KG1/;8<1<<397/5A8=398<<7BA5 :3</8<>3234:1/>881==5A8G<3G8<523G573/>D \D ./5A8U?V8:5>G1/8=J:=7:F5A8O<19012345I8==7:3/D ]D ^3685A8G37/58<535A8O3:4C8/597/;39_5A8C34>8G37/58<:A1/B8>531 ;<197/B533=W=33F>=7F81>C1==:<3>>ZDI=7:F7/5A84GG8<=8@5:3</8<3@5A8 ;3:4C8/5J5A8/;<1B53;<191=12345:8==D XA8/234<8=81>85A8C34>8J1=12345:8==1GG81<>7/1=1234551?=8D
N`a
12345634732
9)*+,-./00,1+**23,4560.78++0)*9.:/;*40<845.<=,455*784*60)*3,>*+,-./0 ,?*,@9)*<)80*?*:0,4>+*860)*+,-./0:*++-./A/605?*<@B./:,43+,:*,55808.4,+ +,-./0:*++6840)*>?,-,?*,.70)*+,-./00,1+*@ C3DEF3G4HIJKL3MMD 9.3?*:86*+-5*68>4,3,>*=-./:,46*00)*68N*.7:*++6-./,5584,5.:/;*40@B./ :,4,+6.?*3.6808.4:*++6840)*3,>*@ O@ P+8:Q0)*1.?5*?.70)*+,-./0:*++0.6*+*:080@ R,45+*6,33*,?,?./45,6*+*:0*5+,-./0:*++S T@ 9.?*68N*0)86+,-./0:*++=5..4*.70)*7.++.<84>S U V40)*W?.3*?0-8463*:0.?7.?0)*+,-./0:*++=0-3*XOY840)*Z82*578*+50.6*0 0)*:*++[6<850)0.XOY382*+6=0)*4:+8:Q840)*5.:/;*400.6**0)*:*++<850) :),4>*@ \.0*SV7-./*40*?,382*+<850)0),086+,?>*?0),40)*<850).70)*+,-./0 0,1+*=.?0),0:,/6*60)*:*++0..]*?+,3,4.0)*?:*++84,+,-./00,1+*= 9?*,;<*,]*?,+*?06-./,45,5A/6060)*:*++<850)0.,],+85<850)@ U ^40)*?8>)0685*.70)*+,-./0:*++=5?,>0)*;855+*?*68N*),45+*0.0)*?8>)0 /408+0)*:*++860)*5*68?*5<850)@_)*4-./?*+*,6*0)*;./6*=0)*:*++[6 <850)865863+,-*5840)*:.+/;4)*,5*?,?*,,+.4>0)*0.3.70)*+,-./00,1+*@ `aabJMKEcM3G4HIJKL3MMD \*20-./<8++,550)?**+,-./0:*++61*+.<0)*+.>.:*++-./A/60:?*,0*5@d,0*?-./ <8++846*?00)*3,>*[64,]8>,08.41/00.46840)*6*:*++6@ O@ V40)*^1A*:063,4*+=:+8:Q0)*9?,<d,-./0P*++8:.4e0)*4).+55.<40)* P.40?.+Q*-f_845.<6g.?P.;;,45Q*-fh,:840.6)g@ T@ V40)*9.:/;*40<845.<=3.6808.40)*3.840*?1*+.<0)*:*++-./5?*<7.?0)* +.>.e0)*45?,>0.5?,<,+,-./0:*++@ P.4084/*0.).+50)*P.40?.+Q*-f_845.<6g.?P.;;,45Q*-fh,:840.6)g,45 5?,<0<.;.?*+,-./0:*++6@B./?6:?**46)./+5+..Q68;8+,?0.0)86@ Oij
123456478)*78+*8,-
./0,*)*1/+62,33 456789::;<7=>9:8?<@:A:==B9:C<<7:DA@7<@:E678AD9E:B>F:D9;G7H:<@:=D678< A:==BDB6789::;IJ78AD9A@D9K:<@:B>F:75D=D678<A:==L68B>9K79:75><BE:B>F: @D9;=:BI J78AD997<A=>AMD9;;EDKDA:==<7G7H:><<7D9:N?7B><>79I456789::;<7G7H:D =D678<A:==<7E:?7B><>79><>9D;7A8G:9<O57==7N<@:B:B<:?BI PI Q=>AM<@:L7E;:E75D=D678<A:==<7B:=:A<><I RI S7G7H:<@:=D678<A:==O;779:75<@:57==7N>9KT U VB:<@:DEE7NM:6BI U W7=;;7N9X@>5<D9;8B:<@:DEE7NM:6B<7G7H:D=D678<A:==Y?>C:=BD<D<>G:I Z3/+52,33-47*)*1/+6[*\3, ]7N678N>==?8<<@:9DH>KD<>79L8<<79A:==B678^8B<AE:D<:;>9<7DB>9K=:<DL=:I _E78?>9K<@:A:==B>9<7D<DL=::9DL=:B678<7A79<E7=<@:A:==B?DA>9KD9;<7:DB>=6 G7H:<@:A:==BDBDKE78?>5678ND9<<7A@D9K:<@:?DK:=D678<IJ78N>==AE:D<:D <DL=:57E<@:9DH>KD<>79L8<<79B<@D<>B<@:BDG:N>;<@DB<@:=7K7A:==DL7H:><I VB:`EDNaD678<SDL=:<7KE78?<@:9DH>KD<>79L8<<79>GDK:BI PI 49<@:bL^:A<B?D9:=OA=>AM<@:`EDNaD678<SDL=:>A79I RI 49<@:`7A8G:9<N>9;7NO?7B><>79<@:?7>9<:ED<<@:<7?=:5<A7E9:E75<@:5>EB< 9DH>KD<>79L8<<79A:==c<@:9;EDK<@:?7>9<:EB7<@:<DL=:A79<D>9B<@:<@E::A:==B D9;>B<@:=:9K<@75<@:=7K7A:==I
PI d:=:DB:<@:G78B:<7B::<@:A:==BKE78?:;>9D9:N<DL=:I Pef
12345634732
9) *+,-./0120.304.3.5603-.31+73.8793-2006.:+,310669;3-0<-830.20.873-0 3.560=.74.70>?3:9?.10;3-0@2.:.20.873-03.560=) AB73CD3E4FBGCH4IJ3 *+,1.7906013.74>+/0.6.:+,33.5603++3-02.20.987.4+1,>073)*+,1.77+3K -+<0/02K>+/0.6.:+,33.5609+3-.383+/026.?9.7+3-02) L0M3:+,<866>+/03-03.560:+,N,93120.304.O0<?8M0693+3-028@-33++OO9033-0 .68@7>073+O3-07./8@.38+75,33+793+3-06+@+<-073-0:.2087902304873-0?.@0) P) Q73-0R+1,>073<874+<1681S3-03.5+73-0T.:+,33.5603+>+/083) 9) R2.@3-06.:+,33.560.O0<?8M0693+3-028@-33+20?+9838+783K3-0742.@+70+O3-0 3.560U928@-32098V0-.746093+.68@73-028@-398409+O3-06+@+.747./8@.38+7 5,33+76.:+,310669) L+38103-.3.9:+,120.3070<3.5609.7410669K@28468709.??0.2+,368787@3-06.:+,3 .20.)*+,1.7,903-090@284687093+.68@73-06.:+,3060>0739) WXX4YBCD32E4FBGCZ3JJ L0M3.44.6.:+,31066O+23-0T0.27[+20\5+,3@2.?-81) P) Q73-0]5N0139?.706K1681S3-0R2.<T.:+,3^06681+7) 9) Q73-0R+1,>073<874+<K42.<.70<1066873-09?.10506+<3-07./8@.38+7 5,33+73.560) *+,2?.@09-+,646++S98>86.23+3-89_
P`P
123456478)*78+*8,-
.3,*6,*)*/0+61*23, 456789:;6;8<6=>5?>@@;8A<899;6><B8:68:6:C98DE>FG?>@F=99;887>F6>;6:B6F=67 :6:C98:5A:AA<899;9:68BD HD 45678ICJ8<6;K:589G<9=<L678MB:FN:?>@6O:C98=<>5D PD Q>R8678K>=568B6>678M><@S856F=5A>FD45678:B8:C89>F6789:?>@6<899?>@ J@;6:AA8AGAB:T678K>=568B6>678B=T766>:9=T5F=67678B=T76;=A8>U6786>KS>;6 <899V6785AB:TA>F56>678C>66>S>U678M><@S856F=5A>FD
W3*X)*/0+6.,33-47*1*23, E>F:AA9:?>@6<899;=56>F7=<7?>@F=99:AA68Y6:C>@66B:R899><:6=>5;D HD 45678ICJ8<6;K:589G<9=<L678MB:FN:?>@6Z899=<>5:5AS>R8678K>=568B6>678 9:?>@66:C98?>@J@;6AB8FD PD MB:F:6:C98<899:KKB>Y=S:689?>58[67=BA678;K:<8=56786:C98D \D Z9=<L678C>BA8B>U6789:?>@6<8996>;898<6=6V6785=5678]B>K8B6?=5;K8<6>B^; _=Y8AU=89AG6?K8H`a6>;86678<899b;F=A67D cD MB:F:5>678B6:C98<899:KKB>Y=S:689?>58[67=BA678;K:<8=56786:C9858Y66>678 U=B;6<899D dD Z9=<L678C>BA8B>U6789:?>@6<8996>;898<6=6V6785=5678]B>K8B6?=5;K8<6>B^; _=Y8AU=89AG6?K8H`a6>;86678<899b;F=A67D eD MB:F6789:;66:C98<899=5678B8S:=5=5T;K:<8=56786:C98Df8;=g8>BS>R8678 <899;6>:AJ@;6678;=g8>BK>;=6=>5>U678<899;:;588A8AD h>@B;<B885;7>@9A9>>L;=S=9:B6>67=;i
HjP
12345634732
9)* +,-./0+123.-
45678999:;<=>757;?@>58=@:<>8A;B:@8=C<:;A7:;D:<E6@8=BC<:;A7:;D:<F@ A;8=A:=6;=G6@8=B>H:IJK:L>@M;=:9N ON P98LQ;=?7H:<:8=>H:95B59;?56>L:99R>H:>5MA5@>9;?56>L:99SN P98LQ8=B8=;9;?56>L:99M9;L:@>H:8=@:<>85=M58=>8=>H:L:9978>H56>@:9:L>8=B>H: L:99N TN PH55@:U=@:<>VUA;B:N WN U=>H:X:9:L>UA;B:X56<L:G8;95BJ5YZ95L;>:>H:P5AM;@@[X8>:\59G:<;=G =;D8B;>:>5>H:]@@:>@\59G:<Z>H:=>H:8A;B:@\59G:<^L98LQ>H:L5AM;@@[95B5NB8\ >5@:9:L>8>N _N `;Q:@6<:>H:a:9;>8D:b5M5Mc6MA:=695L;>:G;>>H:J5>>5A5\>H:G8;95BJ5Y 8@@:>>5C5L6A:=>Z>H:=L98LQX:9:L>Rd8=G57@S5<IM:=R`;L8=>5@HS>5@:9:L> >H:8A;B:N bH:8A;B:;MM:;<@8=>H:9;?56>L:99N
eN P98LQ;=?7H:<:8=>H:f:;<=`5<:]J56>9;?56>L:99>5M9;L:>H:8=@:<>85=M58=> 8=>H:L:99N gN U=>H:IJK:L>@M;=:9F@P5AA5=L;>:B5<?ZL98LQ>H:U=@:<>UA;B:8L5=N hN U=>H:X:9:L>UA;B:X56<L:G8;95BJ5YZ95L;>:>H:P5AM;@@[X8>:i]@@:>@i8A;B:@ \59G:<Z;=G=;D8B;>:>59:;<=`5<:]J56>NB8\^>H:=L98LQX:9:L>Rd8=G57@S5<IM:= R`;L8=>5@HS>5@:9:L>>H:8A;B:N bH:8A;B:;MM:;<@8=>H:9;?56>L:99N jN PH55@:k89:VX;D:>5@;D:>H:LH;=B:@?56A;G:>5>H:H5A:M;B:N l234m34/noon732+54p3 ]<5995D:<8A;B:8@;=8A;B:7H5@:G8@M9;?LH;=B:@7H:=>H:M58=>:<M;@@:@Rq<599@qS 5D:<8>N45678996@:C<:;A7:;D:<F@U=@:<>a5995D:<UA;B:L5AA;=G>5L<:;>:>H<:: <5995D:<8A;B:@\5<>H:=;D8B;>85=J6>>5=@Eb<8Mr9;==:<ZC:@>8=;>85=@Z;=Gb<;D:9 f5B@N ]<5995D:<8A;B:L5=@8@>@5\>758A;B:@s>H:8A;B:G8@M9;?:G7H:=>H:M;B:\8<@> 95;G@8=>H:J<57@:<Z;=G>H:8A;B:G8@M9;?:G7H:=>H:M58=>:<A5D:@5D:<>H: 5<8B8=;98A;B:Nt:@6<:>56@:8A;B:@>H;>;<:>H:@;A:@8u:NbH:\8<@>8A;B:G8L>;>:@ >H:@8u:5\>H:G8@M9;?Z@58\>H:@:L5=G8A;B:8@A6LH@A;99:<5<A6LH9;<B:<Z>H: <:@69>@7899955QG8@>5<>:G5<6=M<5\:@@85=;9N v:Y>Z?567899;GG;=;D8B;>85=J6>>5=78>H;<5995D:<8A;B:>5?56<M;B:NbH:=?56 7899;GG>H:5>H:<=;D8B;>85=J6>>5=@;=GM<:D8:7>H:M;B:8=;J<57@:<>5>:@>>H: <5995D:<@N ON U=>H:C5L6A:=>78=G57ZL98LQ8=>H:\8<@>L:995\>H:=;D8B;>85=J6>>5=>;J9:N bH8@>:99@C<:;A7:;D:<7H:<:?567;=>>H:8A;B:8=@:<>:GN TN b58=@:<>;<5995D:<8A;B:ZG55=:5\>H:\599578=Bs OjW
123456478)*78+*8,-
. /0123456650781395:;5<123=>?371@A803BC7BD7E123/0@3:1F5BB5G3: /6893D750H . 4255@3/0@3:1I/013:871DG3/6893IF5BB5G3:/6893H JH /0123/0@3:1F5BB5G3:/6893KD8B59>5LC1;A3AB8003:D0123/6893M863<D3BKH N2D@9DG3@123D68938O0DPO30863C80K68E3@D138@DB;DK301D<D8>B3D0123 QNRS75K3H TH /0123=:D9D08B/6893<D3BKC7BD7EU:5V@3W123008GD981315R30ON:DAXB8003:H9D< 80K7BD7EY3B371Z[D0K5V@\5:=A30ZR87D015@2\H N2D@13BB@]:386V38G3:V2D72D689315KD@AB8;V230123A893<D:@1B58K@H ^H /0123F5BB5G3:/6893<D3BKC7BD7EU:5V@3W123008GD981315 R30ON:DAXB8003:_50H9D<80K7BD7EY3B371Z[D0K5V@\5:=A30ZR87D015@2\H N2D@13BB@]:386V38G3:V2D72D689315KD@AB8;V230123A5D013:D@5G3:123 5:D9D08BD6893H `H R8E3@O:3123X:3B58KF5BB5G3:/68935A1D50D@@3B3713K@51281123:5BB5G3: D6893@B58KV230123A893B58K@D0123>:5V@3:C30@O:D098POD7E1:80@D1D50 >31V330D6893@V2308O@3:65G3@123A5D013:5G3:1235:D9D08BD6893H
aH 4BD7E=b157B5@3123KD8B59>5LH N23D68938AA38:@D0123K57O6301H cH F3@Dd3123B8;5O173BB15<D1123D6893H e3,*6,6f,g6f,3hgiigj,3kl*8, M5V;5OVDBB8KK:5BB5G3:D6893@<5:1235123:08GD981D50>O1150@H mH /0123]57O6301VD0K5VC7BD7ED0123@3750K08GD981D50>O115073BBW1230D0123 456650781395:;5<123=>?371@A803BC7BD7E123/0@3:1F5BB5G3:/6893D750H nH /0123/0@3:1F5BB5G3:/6893KD8B59>5LC1;A3K3@1D081D50@D0123/6893M863 <D3BK15A:5GDK3123D68938O0DPO30863H JH /0123=:D9D08B/6893<D3BKC7BD7EU:5V@3C123008GD98131580K@3B371 R30O]3@1D081D50@H9D<H TH /0 123 F5BB5G3:/6893 <D3BKC7BD7E U:5V@3C1230 08GD9813 15 80K @3B371 R30O]3@1D081D50@_50H9D<H ^H R8E3@O:3123X:3B58KF5BB5G3:/68935A1D50D@@3B3713KC12307BD7E=b157B5@3 123KD8B59>5LH `H /0123]57O6301VD0K5VC7BD7ED012312D:K08GD981D50>O115073BBW1230D0123 =>?371@A803Bo@456650781395:;C7BD7E123/0@3:1F5BB5G3:/6893D750H aH /0123/0@3:1F5BB5G3:/6893KD8B59>5LC1;A31:8G3BB59D0123/6893M863<D3BK 15A:5GDK3123D68938O0DPO30863H cH /0123=:D9D08B/6893<D3BKC7BD7EU:5V@3123008GD98131580K@3B371 R30ON:8G3BS59@H9D<H pH /0 123 F5BB5G3: /6893 <D3BKC7BD7E U:5V@3 1230 08GD9813 15 80K @3B371 R30ON:8G3BS59@_50H9D<H mcT
12345634732
9)*+,-./01.23.41.56,7865569.1:;,<.6=2>6?>//.5.@2.7A23.?@5>@-BC26@56/. 23.7>,56<D6E* 99*8./>F.23.2G65,H602@.55/26I>223.>;,<.* J237K36LMN21MON53PQ R60@,??629>.G165569.1D.3,9>61>?S1.,;G.,9.1T/S6@0;.?2G>?76GU165569.1 >;,<./G61-6?5H>?,D16G/.1*V6G.9.1AH60@,?=1.9>.G23.76@0;.?2>? S1.,;G.,9.126/..>2/D16G/.1W1.5,2.7I0?@2>6?/*R6076?623,9.26/,9.23. 76@0;.?2D.I61.H60=1.9>.G>2* 9* 41.//X9Y26/..H60176@0;.?2>?,Z.DD16G/.1*
+69.23.;60/.=6>?2.169.123.165569.1>;,<./H60@1.,2.726/..23.; @3,?<.* Y* Z3.?H60I>?>/3=1.9>.G>?<23.I>5.A@56/.23.D16G/.1G>?76G* [* 8.201?26S1.,;G.,9.1T/S6@0;.?2G>?76G,?7@366/.X>5.\],9.26/,9. 23.@3,?<./H60;,7.2623.36;.=,<.*
^_^ `abcdeecfe
g6GH60G>55,772.E2>?23.@.55/6I23.D6226;5,H6022,D5.* :?S1.,;G.,9.1AH60@,?2H=.@6?2.?27>1.@25H>?26,5,H602@.55A61H60@,?@02,?7 =,/2.@6?2.?2I16;,?623.176@0;.?2>?26,5,H602@.55*:?23>/0?>2AH60G>55,772.E2 2623.5,H602@.55DH@6=H>?<,?7=,/2>?<@6?2.?2I16;,?.E>/2>?<2.E2I>5.26,5,H602 @.55* 9* h366/.X>5.\B=.?U23.?A>?23.h6;=,//i]>2.I657.1A6=.? SZjiV6;.k.E2*2E2* k3.SZjiV6;.k.E2*2E276@0;.?26=.?/>?,?.GS1.,;G.,9.1S6@0;.?2 G>?76G* Y* :?SZjiV6;.k.E2*2E2/.5.@223.I>1/22G65>?./6I2.E2AlX5HX>/3>?<l23160<3 l1,9>65>*l [* h366/.m7>2\h6=H26@6=H23.2.E2* j* :?23.;Hih6;=,//V6;.76@0;.?2A@5>@->?23.I>1/25,H602@.55>?23.2.E2W 7./@1>=2>6?5,H6022,D5.* n* h366/.m7>2\4,/2.26=,/2.23.2.E2>?2623.5,H602@.55* o* :?SZjiV6;.k.E2*2E2/.5.@223.?.E22G65>?./6I2.E2Alp.9.5n8,=>7/l23160<3 l]>D.1>,*l q* h366/.m7>2\h6=H26@6=H23.2.E2* r* :?23.;Hih6;=,//V6;.76@0;.?2A@5>@->?23./.@6?7@.55>?23.2.E2 7./@1>=2>6?5,H6022,D5.* s* h366/.m7>2\4,/2.26=,/2.23.2.E2>?2623.5,H602@.55*
9rn
123456478)*78+*8,-
./0123456789:;:<=0=<=>:?:@==A:?B>==C8?D2:>8E=:<=FGHIJ:=K8I2LMBNBOD2JG =AP8IJAGHIJ:=K8I2L0G ..0Q8RN=A:=:<=F=A:2RB>=:D=D2=A:=ADPL@:??D2=A:?BN8I==BS?:0 .T0Q?8>:3456789:;:<=0=<=F=A:2@?D@OD2=A:9N6Q89RB>>789:0A=9?=89BO:D= =A:B@=DU:L8@I9:2=0 VW3X*6Y,Z6 [8I@B2E8P9B==:<=D2=A:38@I9:2=CD2L8CSN>:==D2JRP8R:P=D:>D2=A:HP8R:P=N D2>R:@=8P0\DP>=F>:?:@==A:=:<=N8ICB2==8E8P9B=FB2L=A:2BRR?N=A:@AB2J:>0[8I CD??@AB2J:=A:E82==NR:B2L>D]:8E=A:=:<=0 .0 1E=A:HP8R:P=ND2>R:@=8PD>2^=8R:2F@A88>:4D2L8C_HP8R:P=D:>0 T0 12=A:EDP>==:<=L:>@PDR=D82?BN8I=@:??F>:?:@=B??=A:=:<=EP89=A:C8PLG\?NFG =AP8IJA=A:?B>=C8PLGPBUD8?D0G `0 12=A:HP8R:P=ND2>R:@=8P^>>:@82L\8P9B=R8RaIR9:2IFCAD@A@IPP:2=?NP:BL> 3:EBI?=\82=F>:?:@=b:PLB2BFcPDB?F7:?U:=D@BF>B2>a>:PDE0 50 12=A:KD]:R8RaIR9:2IF>:?:@=T0 ;A:=:<=D2N8IPL8@I9:2=BI=89B=D@B??NIRLB=:>=8P:E?:@==A:@AB2J:>0 d0 e:R:B==A:BS8U:>=:R>=8>:?:@=B2LE8P9B==A:=:<=D2=A:8=A:P=C8=:<=a L:>@PDR=D82?BN8I=@:??>0 f55ghiWgW3*7j16hg, k8CN8ICD??BRR?NBLLD=D82B?E8P9B==D2J@AB2J:>=8=A:=:<=>I@AB>@AB2JD2J=A: @8?8PB2L>=N?:=8@P:B=:A:BLD2J=:<=0 .0 12=A:EDP>==:<=L:>@PDR=D82?BN8I=@:??F>:?:@==A:A:BLD2J=:<=EP89=A:C8PL G\?NG=AP8IJA=A:C8PLGl8I2=BD2>0G T0 12=A:HP8R:P=ND2>R:@=8PF@?D@O=A:@8?8PRD@O:Pm=A:298U:=A::N:LP8RR:P=8=A: n:BP2l8P:cS8I=D9BJ:D2=A:L8@I9:2=CD2L8CB2L>:?:@==A:SP8C2@8?8P8E =A:=:<=D2=A:D9BJ:0 `0 K=D??D2=A:HP8R:P=ND2>R:@=8PF@?D@O=A:oD@82=8BRR?NS8?L>=N?:=8=A:=:<=0 50 e:R:B==A:BS8U:>=:R>=8BRR?N@8?8PB2L>=N?:=8=A:A:BLD2J=:<=D2=A:8=A:P =:<=L:>@PDR=D82?BN8I=@:??>0 d0 HP:>>\.T=8RP:UD:CN8IPRBJ:D2BSP8C>:P0 [8IPRBJ:>A8I?L?88O>D9D?BP=8=A:RBJ:S:?8C0
k8=D@:=A:=:<=0;A:P:D>?D==?:>:RBPB=D82S:=C::2=:<=D282:?BN8I=@:??B2L=A: 2:<=F:>R:@DB??NS:=C::2=A:>:@82LB2L=ADPL@:??>0[8ICD??ED<=AB=D2=A:?B=:P RBP=8E=A:I2D=0 p0 Q?8>:=A:SP8C>:PCD2L8CF=A:2@?D@OD2=A:38@I9:2=CD2L8C=89BO:D=B@=DU:0 .qp
9)* +,-./0123013-14/5+
12345634732
6789:;<=>?=@A>BCD:BD9EB78=FG9:;H>IC7G>@JKA9:GA89:L7F7MN:@;O9@;9D89:E M>@=GF>B>O>F;@=F6789:;<=>?PL>E;7=FLA7FG>@O:@;I>L9OCB>;>M=FQ;7FM7EM <=>?JHA>F89:@?=;LA;9Q;7FM7EM<=>?P89:?=BB@>>A9?RE>7O?>7<>E:@>@;7IB>@ ;9LE>7;>89:EC7G>@;E:L;:E>JKA>6789:;;7IB>@=F6789:;<=>?7E>S;7IB>T;7G@=F Q;7FM7EM<=>?J U9?89:?=BBB>7EFA9?;9?9EV?=;A;7IB>@;9L9F;=F:>D=F>W;:F=FG89:EM>@=GFJ X=E@;P89:?=BB@?=;LA;9RE>7O?>7<>EY@Q;7FM7EM<=>?J Z [F;A>\IN>L;@C7F>BPLB=LV;A>Q;7FM7EM]=>?=L9FJ ^9:EC7G>@A9:BMB99V@=O=B7E;9;A>@LE>>FI>B9?J
13_`3aab2cd32_e3f g>BBA>=GA;M>;>EO=F>@;A>A>=GA;9D;A>@C7L>?=;A=F7L>BBE9?JU9;=L>;A>@C7L> 7E9:FM;A>g9OC7@@B9G9J^9:?7F;;9E>O9<>;A>>h;E7@C7L>I>;?>>F;A>B9G97FM F7<=G7;=9FI:;;9F@J iJ gB=LV7F8?A>E>=F;A>IB7FV7E>79D;A>L>BBL9F;7=F=FG;A>g9OC7@@B9G9=O7G> jI:;F9;;A>=O7G>=;@>BDkJ lJ [F;A>L>BBmE9C>E;8=F@C>L;9EP=F;A>nD=>BMjA>=GA;kP;A7;L:EE>F;B8L9F;7=F@7 <7B:>PM>B>;>;A><7B:>J oJ Q;=BB=F;A>mE9C>E;8=F@C>L;9EPLB=LV;A>pGL9B9EI9h=L9FB9L7;>M=F;A>I9;;9O 7E>79D;A>mE9C>E;8=F@C>L;9Eq;A>F:@>;A>>8>ME9CC>E;9@>B>L;IB7LVJ KA>I7LVGE9:FML9B9E=@7CCB=>M;9;A>L>BBJ rJ gB=LV7F8?A>E>=F;A>R9L:O>F;?=FM9?;9@>>;A>LA7FG>J 13a3s_etu424va3 U>h;89:?=BB7MN:@;;A>@C7L>=F;A>F7<=G7;=9FI:;;9F;7IB>JKA>>7@=>@;?78;9 @>B>L;7;7IB>=FQ;7FM7EM<=>?=@I8:@=FG;A>;7G@>B>L;9EP?A=LAM=@CB78@nKw6 ;7G@9D>B>O>F;@=F;A>M9L:O>F;J ^9:?=BB:@>;A>;7G@>B>L;9E;9@>B>L;;A>;7IB>L9F;7=F=FG;A>F7<=G7;=9FI:;;9F@J iJ gB=LV=F;A>L>BB;A7;L9F;7=F@;A>KE=CmB7FF>E=O7G>J U9;=L>;A>;7G@>B>L;9E7;;A>I9;;9OB>D;9D;A>R9L:O>F;?=FM9?J U9;>xKA>;7G@=F89:E;7G@>B>L;9EO78<7E8I7@>M9F;A>F:OI>E9D;7IB>@89: LE>7;>M?A=B>=F6789:;<=>?J lJ [F;A>;7G@>B>L;9EPLB=LV;A>E=GA;O9@;S;7IB>T;7GJ iyz
123456478)*78+*8,-
./012345672/089/:48;<4=:2=;>>2;=?;=46/:012/;@9A;094/<6004/0;<B2C ;/:012D=4>2=0E9/?>2504=/48=2FB250?>=4>2=092?F4=;0;<B2G
1,6H*IJ,K3L5,364,M48E4689BB6?20120;<B2D=4>2=0E9/?>2504=045B2;=0122N0=;?>;529/012 /;@9A;094/<6004/?0;<B2;/:04;::;<;5OA=46/:54B4=9/0120;<B2G PG ./012D=4>2=0E9/?>2504=C5B95O012QB2;=R48S29A10?954/G.09?01204>B2F0 <6004/9/012B482=1;BF4F012D=4>2=0E9/?>2504=G T122N0=;?>;529?=274@2:F=470120;<B2G UG V09BB9/012D=4>2=0E9/?>2504=C5B95O012WAQ4B4=54B4=<4N954/C012/6?2012 2E2:=4>>2=04?2B25001254B4=<B;5OG T12<B;5O<;5OA=46/:54B4=9?;>>B92:04012/;@9A;094/<6004/?0;<B2G XYYZ,JJK*YY478 M2N0CE4689BB7;O251;/A2?0401252BB?01;054/0;9/02N0G[?E465;/?22C01202N09? 0445B4?2040122:A2?4F01252BB?G\4689BB;::>;::9/A0401252BB?04B2;@2=447 <20822/01202N0;/:52BB?G PG QB95O9/012F9=?052BB9/01202N0:2?5=9>094/0;<B2G UG ./0120;A?2B2504=C5B95O012=9A1074?0]0;<B2^0;A04?2B2500120;<B2G _G ./012D=4>2=0E9/?>2504=`?Q2BBD;:F92B:C0E>2Pa04;::Pa>9N2B?4F?>;52 <20822/01202N0;/:0120;<B252BB?G bG QB95O;/E812=29/012345672/089/:4804?2201251;/A2?G cG V;@2E46=:45672/0G
def ghij Hki1hHilh)i1
T4?22;19A1mB2@2B=2>=2?2/0;094/4F012?0=6506=24F;B45;B?902CE466?2 3=2;782;@2=`?V902n;>@928G\465;/;B?46?2012?9027;>04;::/28F9B2?04012 ?902C04;::C=274@2C;/:51;/A2B9/O?C;/:045=2;02;A=;>195F9B24F012?90201;0E46 5;/2N>4=004;/:>=9/0F=47;/97;A2m2:909/A;>>B95;094/G T12?9027;>;B8;E?:9?>B;E?0121472>;A2F4=;?902;001204>4F0127;>o<2B48 0121472>;A2E465;/?2281951F9B2?0121472>;A2B9/O?04G T12=2;=2;/67<2=4F8;E?04:2F9/2;?902`?1472>;A2GT122;?92?08;E04?20; 1472>;A29?<E6?9/A01254/02N072/689019/012V90289/:48G Ppp
9) *+,-./01/,/+123456/017,/18,9:58/5;3.1,/3-/,<1)=>6/017,/18,9:58,?95/ <,?,2+1@-055?1A,9:58B7,/1C,+1?)D E) >9/017,/18,9:58F?G5-3+C5+:14+,?/@4,H0/I-+,-.=A,9:58?D54*59/45+I-+,-. =J3-,9/5?0D/01;KL*5;M3??N5;1)0/;+:5-O;19/P/019,9/01-59/1Q/;19O@ -055?171/3?N5;1R3H1) S) *+,-./017,/1J3M,-59,9/01/5M+16/341356/017,/18,9:58P/019,9/017,/1 J3MM5MIOM;19O@?1+1-/J3M39:C,+1?)
12345634732
T017,/18,9:589583MM134?8,/0/85<,18?56K5O4+5-3+?,/1U59/01+16/,?3?,/1 ;3M@80,-0H43M0,-3++K41M41?19/?/01-O4419/?/4O-/O4156/01*5;M3???,/1=8,/0 ;KL*5;M3??N5;1)0/;+3?/0105;1M3H1D@39:59/014,H0/,?3+,?/56/01+5-3+ 65+:14F?-59/19/?)
T01;KL*5;M3??N5;1)0/;+M3H1-O4419/+K03?95+,9.?)V5O8,++3::+,9.?/5/0,? M3H1,9/0191Q/?1-/,5956/0,?O9,/) G13<1/017,/18,9:585M19654958@?5/03/K5O-39?11058/01?,/1;3MH1/? OM:3/1:3?K5O3::+,9.?/5/0105;1M3H1)
WXY Z[\]^_`a1_b`cd\ef
>;3H1?,9/01/5M341356/01*5;M3??05;1M3H1HO,:1<,?,/54?/5?M1-,6,-M3H1?59 /01?,/1)g58K5O8,++3::+,9.?654/0193<,H3/,592O//59?) V5O8,++?11/03//014134139O;2145683K?/5-413/1+,9.?O?,9Hh413;813<14) C,4?/@K5O8,++3::3+,9.645;/01T4,MR+39914,;3H1/5/01T4,MR+39914)0/;+M3H1 O?,9H/01R45M14/K,9?M1-/54) 9ij
123456478)*78+*8,-
./ 012345624761897:89;<=4>?=6?@2346?91A9B234CDEF9CGHIIJ9C4/32C=A6=461 46234BGH14/ K34CDEF9CGHIIJ9C4/32C=A6=4<4?9C4I234H?26L4761897/ M/ 01234N9?;C412761897:?=6?@234KB6GO=H114B6CHP491?429I4=4?262/ Q/ F399I4R61897SOB9G4B264I299G41234OB9G4B2D61IG4?29B6A626I1T2H=B4H8D 9G41/ K34OB9G4B2D61IG4?29B86IG=HDI61A9BCH2691H<9;2234I4=4?2486CHP4/
UV6,WK34X61@A64=8?912H61IH1;C<4BI6P1YZ[:9A241B4A4BB4829HIH1;==9B \8;CCD\=61@:?B4H2487341D9;61I4B248234B9==9L4B6CHP4/N9192B4C9L4236I ?3HBH?24B/0276==I991<4B4G=H?487623234A6=41HC49A23489?;C412D9;=61@29/ ]/ 01234OB9G4B2D61IG4?29B:?=6?@234A9=84B6?9129234B6P329A234X61@A64=8/ ^/ 0123454=4?2_6=486H=9P<9`:<B97I429234F9CGHIIE5624A9=84BH18234129 NR]EKB6GO=H114B/32C=a?=6?@54=4?2YR61897I[9BbG41YcH?6129I3[29I4=4?2 234A6=4299G417341234KB6GO=H114B<;22916I?=6?@48/ K34A6=41HC4HGG4HBI61234X61@A64=89A234OB9G4B2D61IG4?29B/d97D9;76== H88H=61@29234N4I261H2691I6CHP4;I61P234OB9G4B2D61IG4?29BH182345624 761897/ e/ F=6?@234262=4<HB9A234562476189729CH@462H?26L4:9B?399I4R61897S5624 _6=4I/f4I6g4D9;BN9?;C412761897:6A14?4IIHBD:I923H2D9;?H1G9I62691234 =4A2I6849A234N9?;C412761897H182345624761897I684<DI684/ h/ 01234N9?;C412761897:?=6?@234N4I261H2691I6CHP429I4=4?262/ i/ 01234OB9G4B2D61IG4?29B:?=6?@234NBHP29_6=46?91Y=9?H24829234B6P329A234 X61@A64=8[:23418BHP234G96124B292345624761897H1861234X9?H=_9=84BX6I2: G961229234A6=4NR]EN4I261H2691I/32C=/
K34A6=41HC4HGG4HBI61234X61@A64=861234OB9G4B2D61IG4?29BA9B234GB98;?2I 6CHP4/ j/ F=6?@2345624cHG6?91612345624761897/K34I624CHGP42I;G8H24829B4A=4?2 234=61@D9;k;I2H8848/
.jl
12345634732
9)*+,-./,01223455672890*3025:3,053;7)02<0=753,5:755:390*3=625702, *02>,5665:3?<6=+;325,@A*0=>5:3)*+,,0125634)72<5:3,053;7)56<0,)*785:3 7,,6=0753<90*3,B=*0=>5:3;02+,-C/,01256=6**7),35:3,053;7)@ D345E86+F0**7<<7*02>96?5:3G?7H3*61,0;713@ IJ@K25:3L6=+;325F02<6FE=*0=>5:3G?7H3*61,0;71356,3*3=505@ II@K25:3M?6)3?5802,)3=56?E<?715:3M6025C56CN0*30=62565:3O053F02<6FE72< )6025565:390*3LPQRG?7H3*61@:5;*@ IS@A:66,3N0*3TO7H356,7H35:3=:7213,86+:7H3;7<3565:3:6;3)713@
U3VWXYZ2[4\3
]6+=7226553,586+?*02>,02L?37;F37H3?B86+;+,5=:3=>86+?*02>,027^?6F,3? 56;7>3,+?35:3)713,6)3?7537,86+34)3=5@ I@ M?3,,NIS56)?3H03F5:3)713027^?6F,3?@ A*0=>5:327H0175062^+5562,56=:3=>86+?*02>,@A*0=>86+?^?6F,3?_,^7=> ^+556256?35+?25686+?:6;3)713@ S@ P:3286+7?39020,:3<53,502186+?)713E=:66,3N0*3TA*6,356=*6,35:3)713@
`a3bcXYZ2[2Y\23VVd
I@ P:757?35:3<0993?325<3,012H03F,7H70*7^*302L?37;F37H3?72<F:750,37=: H03F+,3<96?e fffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffff ff S@ P:75<686+;372^8g6**6H3?0;71372<:6F<686+=?3753623e fffffffffffffffffffffffffffffff fffffffffffffffffffffffffffffff ff
hidj kl1mnopqrmsq `a3bcXYZ2[2Y\23VVd
I@ 7@ t786+5u03Fv86+=72<3,012)713*786+5E02,3?51?7):0=,E72<65:3? ;3<07@ ^@ O572<7?<u03Fv027<<050625602,3?50211?7):0=,534572<;3<07E86+=72 7*,602,3?5*783?,E=?37539?7;3<6=+;325,E=?375357^*3,Ew65:3?6)5062, 26502*786+5H03F S@ 9?6**6H3?0;7130,720;713F:6,3<0,)*78=:7213,F:325:3)60253?)7,,3, -x?6**y/6H3?05@9?6**6H3?0;713=62,0,5,695F60;713,v5:30;713<0,)*783< F:325:3)71390?,5*67<,025:3^?6F,3?72<5:30;713<0,)*783<F:325:3 )60253?;6H3,6H3?5:36?01027*0;713@G6=?37537?6**6H3?0;713E<65:3 96**6F021z { K25:3=6;;62=75316?8695:36^|3=5)723*EK2,3?5g6**6H3?K;713K=62@ { A:66,3K2,3?5TK253?7=50H3K;713Tg6**6H3?K;713@ { K2,3?55:3K2,3?5g6**6H3?K;713L07*61^64E58)327;3695:3K;71302 K;713D7;3N03*<@ I}I
123456478)*78+*8,-
NOP
. . . .
/012345676089/:873;639<=>393?11236:87314<6>@98AB230123@873 948<>C /0123D4994E35/:873;639<=>393?1123/:87314<6>@98AB230123:4F>3 @4601356>4E3512345676089/:873C G53948<D4994E35/:873>24F9<H3>393?13<14948<12354994E356:873 B230123@873B230123@8736>60616899A948<3<148E46<<398A>C I96?JKL14?94>3123<68947H4MC
SECTION 1
HTML (HYPERTEXT MARKUP LANGUAGE)
HTML (Hypertext Markup Language)
Structure 1.0 1.1 1.2 1.3
1.0
Basics of HTML How to Create HTML Document? Steps for Creating a Simple HTML Program Exercises for Practice in Lab Sessions
BASICS OF HTML
Web pages or materials in the form of hypermedia documents accessed through the Internet can be located anywhere in the world. No matter where they originated, most Web documents are created using Hypertext Markup Language (HTML). HTML is a powerful authoring language and has different versions like HTML 4.2, HTML 4.0, HTML 3.2, HTML 3.0 and HTML 2. HTML is used to define document structure and format, with the help of a single tag or a pair of tags. A tag is a string in the language surrounded by a less than (<) and a greater than (>) sign. An opening tag does not begin with a slash (/). An ending or closing tag is a string that begins with a slash (/). HTML documents format textual information with embedded markup tags that provide style and structure information. A whole document in HTML begins with <HTML> and ends with </HTML>.
1.1
HOW TO CREATE AN HTML DOCUMENT?
An HTML document can be created using any HTML editor or text editor like notepad etc.
1.2
1.
STEPS FOR CREATING A SIMPLE HTML PROGRAM
Go to Start -> Programs->Accessories->Notepad. 5
Lab Manual
2.
Begin with a document type tag and an <HTML> opening tag. Enter the following line in your doc. <HTML>
3.
Indicate that you are beginning the head element of a document by issuing the <HEAD> opening tag. If a <HEAD> element is included, it must appear within an <HTML> element. The following line should appear next in your document: <HEAD>
4.
The <TITLE> element is used to indicate the title of an HTML document. <TITLE> tags are placed within the head component of a document and the title is placed between the opening and the closing <TITLE> tags. Add the following <TITLE> element to your document. <TITLE>My First Page</TITLE>
5.
To end the head area issue a <HEAD> closing tag. </HEAD> Thus the <HEAD> element is nested within the <HTML> element.
6
6.
At this point the body of the document is developed. A <BODY> opening tag indicates that this point has been reached. Enter the following line. <BODY>
7.
In the following example, the body of the document contains a simple text statement which you can now enter in your file: Hello World !
8.
A </BODY> closing tag marks the end of the <BODY> element. Similar to the Head element, the <BODY> element is also completely nested within the <HTML> element. To end the <BODY> element, issue the closing corresponding tag in your document. </BODY>
9.
Finally, terminate the <HTML> tag with </HTML> as shown below:
10.
Save your document as mypage.html
HTML (Hypertext Markup Language)
11. To view the document open the .html document in the browser.
1.3
EXERCISES FOR PRACTICE IN LAB SESSION
SESSION 1 Exercises 1.
Write HTML code to develop a Web page having the background in red and title â&#x20AC;&#x153;My First Pageâ&#x20AC;? in any other colour.
2.
Create an HTML document giving details of your name, age, telephone number, address, TLC code & enrolment number aligned in proper order.
3.
Write an HTML code to design a page containing text, in form of paragraphs giving suitable heading style.
SESSION 2 Exercises 1.
Create a page to show different attributes of Font tag.
2.
Create a page to show different attributes: italics, bold, underline.
3.
Design a page having background colour yellow, giving text colour red and using all the attributes of font tab.
SESSION 3 Exercises 1.
Write an HTML code to create a Web page of blue color and display links in red colour.
2.
Write an HTML code to create a Web page that contains an image at its center.
3.
Create a Web page with appropriate content and insert an image towards the left hand side of the page. When user clicks on the image, it should open another Web page. 7
Lab Manual
SESSION 4 Exercises 1.
Create a Web page using href attribute of anchor tag & the attribute: alink, vlink etc.
2.
Create a Web page, wherein when the user clicks on the link it should go to the bottom of the page.
3.
Write HTML code to create a Web page of pink colour and display a moving message in red colour.
SESSION 5 Exercises 1.
Create a Web page, showing an ordered list of the names of five of your friends.
2.
Create an HTML document containing a nested list showing the content page of any book
3.
Create a web page, showing an unordered list of names of five of your friends.
SESSION 6 Exercises 1.
Create a Web page, which should contain a table having two rows and two columns.
2.
Fill in some dummy data in the table created by you in question 1 of this session.
3.
Create the following table in HTML with Dummy Data
Name of train
Place
Destination
Train No.
Time Arrival
Fair Departure
SESSION 7 Exercises 1.
Create the following table Colour (White) RED
2.
GREEN
BLACK
Design an HTML Page having 3 images placed in the following format.
Image 1 Image 2 Image 3
8
(Hint: Table can be used to align images)
3.
HTML (Hypertext Markup Language)
Write HTML code to generate the following output: Weather
DELHI 40
MUMBAI 35
SESSION 8 Exercises 1.
What are HTML Physical style tags and Logical style tags?
2.
Which HTML tag allows you to scroll text on the Web page?
3.
What is the comment tag in HTML?
4.
Design an HTML Page for the “Block Introduction” of this book: The page should allow scrolling and the code should contain a comment header with your name and enrolment number.
SESSION 9 Exercises 1.
What difference does it make if we express the width of a table in percentage or in pixel value? And how do we set the width of a particular column or cell in a table?
2.
Write HTML code to generate the following output: 1 5 7 9
3.
2
3
Image 10
11
4 6 8 12
Create a Web page that should contain a table having seven rows and four columns, along with the attributes – colspan & rowspan.
SESSION 10 Exercises 1.
What are the different versions of HTML?
2.
List 5 different HTML Editors.
3.
What is the different image formats?
9
Lab Manual
SECTION 2
ADVANCED HTML
Structure 2.0 2.1
2.0
Advanced Topics of HTML Exercises for Practice in Lab Sessions
ADVANCED TOPICS OF HTML
HTML is made up of many elements, a lot of which are overlooked. Although you can develop a Website with the basic knowledge of HTML, to take advantage of many of the advanced features, and to make pages fully compatible, it is useful to learn some of the advanced topics of HTML, like: 1. 2.
Frames Forms
Frame pages are basically an HTML file which break the browser window up into separate parts or frames. In each frame a different HTML file can be loaded. The basic idea of an HTML form is the same as that of a paper form. HTML deals with forms exactly the same way you would with a paper form. There are groups of items and single items all gathered together in one large form, like a paper form.
2.1
EXERCISES FOR PRACTICE IN LAB SESSION
SESSION 1 Exercises 1.
How do you handle the situation when the browser doesnâ&#x20AC;&#x2122;t support frames?
2.
What are inline frames?
3.
Which tag is used to define frames in HTML?
SESSION 2 Exercises 1.
Write an HTML code to develop a Web page having two frames that divide the Web page into two equal rows.
2.
Write an HTML code to develop a Web page having two frames that divide the Web page into two equal rows and then divide the second row into two equal columns.
3.
Write an HTML code to develop a Web page having frames as described in the above question and then fill each frame with a different background colour.
SESSION 3 Exercises
10
1.
What are the tags used to display information for browsers that do not support frames?
2.
Write the various attributes of frameset tag and frame tag.
3.
Write a code in HTML to design a page with two frames. The frame should remain proportionate even when page is resized.
Advanced HTML
SESSION 4 Exercises 1.
Write the code to develop a Web page, as shown below, using frames:
2.
Write the code to make the background colour of each frame in the above question different.
3.
Create a Web page divided into two equal frames.
SESSION 5 Exercises 1.
Create a Web page having two frames, one containing links and the containing content of the links. When link is clicked, appropriate contents should be displayed in Frame 2.
2.
Create a home page for a TLC in following format:
TLC Information Links
3.
Appropriate Information
Create a Web page using all the attributes of the frame and other tags.
SESSION 6 Exercises 1.
Design a page with a text box called ‘name’ and a button with label ‘Enter. When you click on the button another page should open, with the message “Welcome <name>”, where name should be equal to the name entered in the first page.
2.
What are the values of method attribute of the form tag?
3.
Set default value of ‘name’ text box of question 1 of this session to Victoria. Add another button called Reset on click of this button name ‘text box’ should be set to 100 default value.
SESSION 7 Exercises 1.
Design a form using all input types.
11
Lab Manual
2.
Create a simple form accepting: Name Enrolment Number And Submit button
SESSION 8 Exercises 1.
Design a Web Page, which is like ‘compose’ page of e-mail To
Copy Message:
Send 2.
Which element is used to accept large text inputs from user?
3.
Write a code to create a Web page having radio buttons labeled as name of colours. Clicking on each radio button should change the colour of the Web page.
SESSION 9 Exercises 1.
What is the purpose of hidden field?
2.
Create a form accepting the values: Name Address Marks in 10 + 2, Graduation & Post Graduation
3.
Which element is used to display a drop down list box?
SESSION 10 Exercises
12
1.
Design a series of three HTML Pages for ABC. COM each called from the previous one. Accept Name on the first page. When the user clicks on the enter button, second page should open. The second page should not display the name but a ‘Welcome screen with some information about ABC.COM. When the user will click on the ‘next’ button it should display the name accepted in page 1 on page 3. (Hint: you may use hidden fields)
2.
Create a Web page; divide that page into two frames. In one frame create two links that will display different HTML forms in the other frame.
SECTION 3
JAVASCRIPT
JavaScript
Structure 3.0 3.1 3.2
3.0
Script Basics Incorporating JavaScript into a Web Page Exercises for Practice in Lab Sessions.
JAVASCRIPT BASICS
The World Wide Web (WWW) began as a text-only medium. The first version does not even have the capability to include graphics on a page. Today’s Web sites include graphics, sound animation, video and sometimes even useful content! Web scripting languages, such as JavaScript, are one of the easiest ways to spice up the Web page and to interact with users in new ways, HTML, unlike which is a simple text markup language, which can’t respond to the user, make decisions, or automate repetitive tasks. Web scripting languages allow you to combine scripting with HTML to create interactive Web pages. A script in JavaScript can range from a single line to a full-scale application. JavaScript was developed by Netscape Communications Corporation, the makers of the popular Netscape Navigator Web browser. JavaScript was the first Web scripting language to be introduced, and it is by far the most popular. Here are a few things you can do with JavaScript: ! ! ! ! ! !
3.1
Add scrolling or changing messages to the browser’s status line. Validate the contents of a form and make calculations. Display messages to the user, either as part of a Web page or in alert boxes. Animate images or create images that change when you move the mouse over them. Detect the browser in use and display different content for different browsers. Detect installed plug-ins and notify the user if a plug-in is required.
INCORPORATING JAVASCRIPT INTO A WEB PAGE
As you, hopefully, already know, HTML (Hypertext Markup Language) is the language you use to create Web documents. You must have created “Hello World!” as given below: <HTML> <HEAD><TITLE>My First Page</TITLE></HEAD> <BODY> Hello World! </BODY> </HTML> To add JavaScript to a page, you’ll use a similar tag: <SCRIPT>. The <SCRIPT> tag tells the browser to start treating the text as a script, and the </SCRIPT> tag returns to the regularly scheduled HTML as given below. Note that the file will be stored as .html or .htm.
13
Lab Manual
The output of the above program will be
In this example, we placed the script within the body of the HTML document. There are actually four different places where you can use scripts: ! !
14
In the body of the page. In this case, the output of the script is displayed, as part of the HTML document, when the browser loads the page. In the header of the page, between the <HEAD> tags. Scripts in the header arenâ&#x20AC;&#x2122;t executed immediately, but can be referred to by other scripts. The header is often used for functions.
!
!
3.2
Within an HTML tag. This is called an event handler and allows the script to work with HTML elements. Event handlers are one type of script where you don’t need to use the <SCRIPT> tag. In a separate file entirely JavaScript supports the use of files with the .js extension containing scripts; these can be included by specifying a file in the <SCRIPT> tag. This feature works only in Netscape Navigator 3.0 or later and Internet Explorer 4.0 or later.
JavaScript
EXERCISES FOR PRACTICE IN LAB SESSION
SESSION 1 Exercises 1.
How would you write any statement using only one write() or writeln() command?
2.
Embed JavaScript in HTML document asking user’s name and then printing Hello <User_Name>
3.
Create a dialogue box with “Welcome to my Website” message.
SESSION 2 Exercises 1.
Evaluate the expression: a. 7+5 b. “7” + “5” c. 7*5 d. 7/5 e. 7%5
2.
Write the segment of Script that would ask the user if he wants a greeting message and if he does, display a Gif file called Welcome .gif and display “Welcome to Netscape Navigator!” in the document window following the Gif
3.
Write the object definition for an object called car with four properties model, make, year & price.
SESSION 3 Exercises 1.
Write a program to display a multiplication table.
2.
Write a code to create a scrolling text in a text box.
3.
Write a JavaScript code to create a pull down menu box.
SESSION 4 Exercises 1.
Write a program to move a text with mouse pointer.
2.
Write a program to change colour of text randomly.
15
Lab Manual
3.
Create a Web page using two image files, which switch b/w one another as the mouse pointer moves over the image. Use the On Mouse over and On Mouse out event handler
SESSION 5 Exercises 1.
Write a JavaScript code to accept radius & display the area of the circle.
2.
Use the date function get Date & set Date to prompt the user for an integer b/w 1 – 31 & return day of the week it represents.
3.
Display time and print message accordingly e.g., ‘Good Morning’ in Morning etc.
SESSION 6 Exercises 1.
Using JavaScript create a digital clock.
SESSION 7 Exercises 1.
Using JavaScript create a calculator.
SESSION 8 Exercises 1.
Create an HTML form that has a number of text boxes. The user fills the textboxes with data. Write a script that verifies that all textboxes have been filled. If a text box has been left empty pop up an alert message indicating the box that has been left empty. When OK button is clicked, set focus to that specific textbox. If all the textboxes are filled, display thank you.
SESSION 9 Exercises 1.
Create an HTML form that inputs employee details and display the same on the HTML page.
2.
Write a program, which prompts the user to enter a sum of two numbers and display whether the answer is correct or incorrect.
SESSION 10 Exercises 1.
Illustrate how the reset button on form functions.
2.
Create a program to check for null or empty string.
SESSION 11 Exercises 1. 16
Create a program to generate a hit counter.
2.
Create a program to verify whether email address provided by the user is valid or invalid.
JavaScript
SESSION 12 Exercises 1.
Write a program to scroll the text on status bar.
2.
Write a program to create a small window in main window.
SESSION 13 Exercises 1.
The form consists of two multiple choice lists and one single choice list a. The first multiple choice list displays the major dishes available. b. The second multiple choice list displays the stocks available. c. The single choice list displays the miscellaneous (Milkshakes, soft drinks, softy etc. available)
SESSION 14 Exercises 1.
Create a Web page with two forms, one office copy and one customer copy when user enters date in customer copy it gets updated in office copy.
SESSION 15 Exercises 1.
Use JavaScript for authentication and verification of the textboxes in the static site developed by the student in the HTML exercise.
17
Lab Manual
SECTION 4
VBSCRIPT
Structure 4.0 4.1 4.2
4.0
VBScript Basics Incorporating VBScript into HTML Page Exercises for Practice in Lab Sessions
VBSCRIPT BASICS
VBScript is a powerful and easy to learn tool that can be used to add interaction to your Web pages. The Web browser receives scripts along with the rest of the Web document. The browser parses and processes the scripts. HTML was extended to include a tag that is used to incorporate scripts into HTML-the <SCRIPT> tag.
4.1
INCORPORATING VBSCRIPT INTO HTML PAGE
To add scripts into your Web pages <SCRIPT> tag is used. The <SCRIPT> tag signifies the start of the script section, while </SCRIPT> marks the end. An example of this is shown below: <HTML> <HEAD> <TITLE>Working With VBScript</TITLE> <SCRIPT LANGUAGE="VBScript"> <!-MsgBox "Welcome to my Web page!" --> </SCRIPT> The LANGUAGE attribute of SCRIPT tag specifies the language used for scripting. Scripts are usually placed at the top of the Web document, in the HEAD. There are four different places where you can use scripts: ! !
!
!
In the body of the page. In this case, the output of the script is displayed, as part of the HTML document, when the browser loads the page. In the header of the page, between the <HEAD> tags. Scripts in the header aren’t executed immediately, but can be referred to by other scripts. The header is often used for functions-groups of VBScript statements that can be used as a group. Within an HTML tag. This is called an event handler and allows the script to work with HTML elements. Event handlers are the one type of script where you don’t need to use the <SCRIPT> tag. In a separate file entirely.
Not all browsers support scripting languages. To handle such browsers you can enclose your script in comment tags (<!-- and -->).
4.2
EXERCISES FOR PRACTICE IN LAB SESSION
SESSION 1 Exercises 18
1.
Write a programme to display the following on a Web page:
VBScript
Hello <User_Name> 2.
Create a Web page that displays a message box with the message: â&#x20AC;&#x153;Welcome to my Websiteâ&#x20AC;?
3.
Write code to change colour of text randomly.
SESSION 2 Exercises 1.
Write a VBScript code that accepts the length, breadth and height and displays the area of a rectangle.
2.
Create a programme to generate a hit counter.
SESSION 3 Exercises 1.
Write a programme, which prompts, the user to enter the sum of two numbers and display whether the answer is correct or incorrect.
2.
Using VBScript, create a calculator.
SESSION 4 Exercises 1.
Create a programme to check for null or empty string.
2.
Create a form that has an e-mail field. Now write VBScript code for validation of the email address.
SESSION 5 Exercises 1.
List the Mouse and Keyboard events in VBScript.
2.
How do you generate a random number in VBScript?
SESSION 6 Exercises 1.
2.
Create a form in HTML containing the following fields and then perform the validation of each field using VBScript. Name Address Date of Birth
-
-
textbox textbox a combo box (one for each, day, month and year) textbox
How do you declare variables in VBScript and enlist the various variablesnaming rules.
19
Lab Manual
SESSION 7 Exercises 1.
What is the purpose of Option Explicit in VBScript code?
2.
Using an HTML form accept the Principal, Rate of Interest and Time from the user, validate the three fields and then display the Simple Interest to the user.
SESSION 8 Exercises 1.
Create a programme that accepts the time from the system clock and accordingly displays a Good Morning, Good Afternoon or Good Evening message to the user. Use If â&#x20AC;&#x201C; Then â&#x20AC;&#x201C; Else statement.
2.
Create the above programme using Select Case.
SESSION 9 Exercises 1.
Write a programme in VBScript that uses For..Next looping statement to create a Fibonacci series.
2.
Using Do..While loop display the factorial of a number.
SESSION 10 Exercises
20
1.
Write a programme that displays the multiplication of two matrices.
2.
Write a programme that displays the transposition of a matrix.
3.
Write a programme that accepts a number from the user and displays its factorial only if it is a prime number.
Dreamweaver
SECTION 5
DREAMWEAVER
Structure 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 5.10
How to Work in Dreamweaver? How to Save your File? Menu Adding Layers to the Timeline and Giving Motion to the Layer. Inserting Scripts Inserting External Media in the Web Page Adding SSI (Server-side include to the Page) Adding CSS Style to your Page Adding XML Files to your Page To Export a Dreamweaver Document as XML File Exercises for Practice in Lab Sessions.
5.0
HOW TO WORK IN DREAMWEAVER?
Where and how to open Dreamweaver? Step 1: Click on Start Step 2: Select Program Step 3: Select Macromedia Dreamweaver Step 4: Click on Dreamweaver You will get the screen as given below:
21
Lab Manual
On opening Dreamweaver you will see 3 main windows, (1) Object; which contains Character, Common, Forms, Frames, Head and Invisible. Many options are available under these, like under common where you will get, insertion of image, rollover image, layer, tabular data, horizontal bar, line break, email link, date, flash movie, fireworks object, shockwave file, generator, plug-ins, active x controls, SSI etc. under character in which you will find some special character/symbols like ©, ®, £, ¥, ™ etc; under frames where you will find different type/style of frames; under forms where you will find all the elements of forms, like text box, password box, radio button, check box, selection box, jump menu, submit & reset button etc. (2) Properties; which provides the properties of the selected object/item, page properties etc; (3) Launcher; which contains: Site, Library, HTML Style, CSS Style, Behaviours, History, HTML Source; On clicking any of the items on the Launcher the subsequent window opens up. Before creating your Web page you have to create a Root directory in which all of your work will be saved. Then in Dreamweaver create a Site and Provide the Root Directory (which you have created). To do this: Step 1: Select Site from Launcher window Step 2: Click on Define Site Step 3: Click on NEW Step 4: Give a name under “Site Name” Step 5: Select the folder by browsing under “Local root folder” Step 6: Click on OK Step 7: Click on DONE Now start working on Dreamweaver Write your text, format the text, insert picture through Object window or by INSERT -> IMAGE. The Insert Menu provides you all the features available under the Object window. The modify menu provides you scope to modify the selection properties, page properties, link, table, frames etc. The Text menu helps to do all the formatting for the text, like selecting font, font-size, colour, alignment etc.
5.1
HOW TO SAVE YOUR FILE?
Step 1: Click on FILE Step 2: Click on SAVE Step 3: Choose the folder in which you want to save Step 4: Provide a name to the file (with .htm / .html extension) Step 5: Click on SAVE
5.2
MENU
File Menu: Under it we have New, Save, Save as, Save as template, Import, Export, Preview in browser etc. options. Edit Menu: In this menu we have Cut, Copy, Paste, Undo, Redo, Select all, Find, Replace, Preference etc. options which help us in editing the document. View Menu: Rulers, Grids, Plugins etc. are available under this. Insert Menu: It contains almost all the things, which are there, in the Object tool bar. Modify Menu: Under this we have Page properties, selection properties, Make link, remove link, link target, table, layer, frameset, library, template, timeline, translate etc. This menu helps to modify the page by choosing the option as per requirement. Text Menu: It helps to format the text written in the page by providing details, such as indent, outdent, list (ol, ul, dl), alignment, font, style, size, size increase, size 22
Dreamweaver
decrease, HTML style, CSS style, colour etc. It also provides the facility to check the spellings in the page. Site Menu: This menu contains site files, site map, new site, open site, define site options. Window Menu: It contains all the different windows, like object, properties, launcher, site file, site map, CSS, timeline, history, behaviour, layer, frame, library, template etc.
5.3 ADDING LAYERS TO THE TIMELINE AND GIVING MOTION TO THE LAYER Step 1: Step 2: Step 3: Step 4: Step 5: Step 6: Step 7: Step 8: Step 9:
5.4 Step 1: Step 2: Step 3: Step 4: Step 5:
5.5
Choose Layer from Common toolbar and draw a layer. Write the text inside the Layer. Click on Modify (when the layer is selected) Click on Timeline Click on Add layer to timeline. Modify -> Timeline -> Select Record path to Layer Drag the layer as per your wish, to define a path. Tick on Auto Play & Loop (if required) Open it in the Browser to see the effect.
INSERTING SCRIPTS Click on Insert Click on Script Choose the type of Script Write the code in “Content” To finish, click on OK
INSERTING EXTERNAL MEDIA IN THE WEB PAGE
Step 1: Click on the icon in the object tool bar Or Insert -> Media -> Choose the media type to be inserted Step 2: Find and select the file required (browse) Step 3: Click on OK
5.6
ADDING SSI (SERVER-SIDE INCLUDE) TO THE PAGE
Step 1: Click on the icon in the object tool bar Or Insert -> SSI Step 2: Select the file Step 3: Add the file Step 4: Provide the URL (where to be attached) Step 5: Provide information on Relative to the document or to the “Site Root” Step 6: Click on OK.
To Show/Hide The SSI Document In The Page Step 1: Click on Edit Step 2: Select reference 23
Lab Manual
Step 3: Select Translation Step 4: Click on SSI Step 5: For showing the SSI file; choose one of the following options: a) in all files b) in no files c) in files with extension (stm, htm, html, shtm, shtml) d) in files matching one of these expressions “<!-- #include” Example : <!--#include virtual="/virtual campus/bitmain/result.html" --> Step 6: Click on OK
5.7
ADDING CSS STYLE TO YOUR PAGE
Step 1: Click on Window Menu Step 2: Select CSS Styles Or Click on CSS Styles in the “Launcher” Step 3: Click on New to create a new CSS style Step 4: Choose the Type a) Make custom style b) Redefine HTML c) Use CSS Selection Step 5: Give a name Step 6: Click OK On choosing (a) of step 4 you will get a new screen in which you have to provide the following details in Category: i. ii. iii. iv. v. vi. vii.
Type: Provide the Font, Size, Style, Weight, Decoration, then click OK Background: provide a Colour or insert an image, then click OK Block: Give the alignment style, then click OK Box: Provide the margin setup of Top, Left, Right & Bottom, then click OK Border: Provide the width & colour, then click OK List: Select the list type (OL, UL, DL), then click OK Positioning: Provide the style, Visibility, Z-index, Placement (Top, Left, Right & Bottom), click OK.
After providing the details, select the style from the CSS style window. Choose where to apply this style (body, p, layer etc.), by clicking on Apply button in the CSS style window.
5.8
ADDING XML FILES TO YOUR PAGE
Step 1: Choose File -> Import XML into Template Step 2: Select the XML file & click Open When an XML file is imported, Dreamweaver merges the XML content into the Template, which is being specified in the XML file and shows the result in the document window of Dreamweaver. If that specified Template is not found, then Dreamweaver prompts you to select another Template for use. The XML file should contain the name of the Template and editable region as XML tags.
Example: <doctitle> <![CDATA[<title>newTemplate</title>]]> </doctitle> <Edit-Region> 24
Dreamweaver
<![CDATA[{Edit-Region}]]> </Edit-Region> Here doctitle identifies the title of the Template and edit-region identifies the editable region. But in a standard Dreamweaver file XML tags use the “item name”. The above example (XML tags) is given below in standard Dreamweaver file: <item name="doctitle"> <![CDATA[ <title>newTemplate</title>]]> </item> <item name="Edit-Region"> <![CDATA[{Edit-Region}]]></item> </item> Here “item name=doctitle” identifies the title of the Template and “item name=edit region” identifies the editable region.
5.9
TO EXPORT A DREAMWEAVER DOCUMENT AS XML FILE
Step 1: Choose File -> Open, Step 2: Select the document that uses a template (and has editable regions) Step 3: Click Open Step 4: Choose File -> Export -> Export Editable Regions as XML. Step 5: In the XML dialog box, choose a tag notation Step 6: Click OK. Step 7: Enter a name for the XML file Step 8: Click Save. When the document is exported, the generated XML file contains the name of the Template the document is using and all editable region names.
5.10
EXERCISES FOR PRACTICE IN LAB SESSIONS
SESSION 1 Exercises 1.
Design a Home page of your TLC.
2.
Design a Home page for a Toy Company. The page has an image as the background. Do some attractive text formatting to the text written in the page.
3.
Insert an image in your page. Give a zigzag motion to the image in your page. (Hint: Using timeline)
SESSION 2 Exercises 1.
2.
Insert an image in a page. In the browser, when you take cursor over it, another image emerges under it and when you click on the second image, it takes you to exercise 2 of session 1. Design a Web page which contains details about your TLC. Give links to a few options. Also make a link “Mail Us”. On clicking this, it will open the compose box for mailing to “bit@ignou.ac.in”.
25
Lab Manual
SESSION 3 Exercises 1.
Show the course contents of HND in a table.
2.
Design the table as given below and enter some data:
Table 1 Name Age
Personal Table 3.
Phno.
Table 2 Name Address
Table 3 Name M-1
Address Table
Marks Table
M-2
Total
Include .css file to one of your Web page created earlier.
SESSION 4 Exercises 1.
Design a form as shown below:
2.
a. b.
Include an SSI file in your document. Show the SSI file in this document. Include an SSI file in your document. Donâ&#x20AC;&#x2122;t show the SSI file in this document.
SESSION 5 Exercises
26
1.
Show the course contents of HND in a table using XML and not HTML.
2.
Create a Website that has a questionnaire (any), on submitting, it displays the inputted data on the other page. You are supposed to use CSS and SSI (wherever necessary).
Dreamweaver
SESSION 6 Exercises 1.
Create a website that divides the Web page into two unequal frames. In Frame One, there are two links to two different forms. The forms are validated on submitting and the result is shown at the bottom of the same page. Use CSS for formatting.
2.
Design the homepage for IGNOU BIT using XML.
3.
Write “Indira Gandhi National Open University”, “Bachelor of Information Technology”, “Name of your TLC”, “Your Name” and “Your Enrollment Number” in a Web page. The above written text will overlap each other. The texts written have different coloured backgrounds. (Hint: Use Zindex)
SESSION 7 Exercises 1.
Design a form, which has a list menu. On selecting any item from that menu it jumps to the related page. Insert a “GO” button alongside the list menu.
2.
Using CSS, remake the Website given in Question 2 of Session 1.
SESSION 8 Exercises 1.
Make a Web page to include: 1) 2) 3) 4)
a background image, set the text colour to blue, make 2 logos, link them to the IGNOU home page, set the colour of all other text links black. (Use Hexadecimal colour values rather than named colours). Use Cascading Style Sheets to develop the above Web page 2.
Explain the effect of the following HTML Code: <html> <head> <title> Question 2: Session 8</title> </head> <body marginwidth="0" marginheigth ="0" topmargin ="0" leftmargin ="0"> <table> <tr> <td bgcolor ="#6BA2CC" > <img src ="image_1.gif"> </td> <td bgColor ="#6BA2CC" width ='500'> <center> <b>THE TITLE OF THE WEBSITE </b></center> </td> <td bgcolor ="#6BA2CC" align ="right" width ='230' valign ='top'> <a href="index.asp" style="color:'#134A81'">Home</a> | <a href="contact_us.asp" style="color:'#134A81'">Contact Us</a> | <a href="feedback.asp" style="color:'#134A81'">Feedback</a> <a href="help.asp" style="color:'#134A81'">Help</a> <input type="text" size ="16" class ="input_box"> <input type="button" value="Search" class ="button"> </td> </tr> 27
Lab Manual
</table> <table> <tr> <td> <input type="Button" value="Home"> <input type="Button" value="Contact Us"> <input type="Button" value="Feedback"> <input type="Button" value="Email"> <input type="Button" value="Help"> </td> </tr> </table> </body> </html> 3.
In the above question use gif images instead of buttons.
SESSION 9 Exercises 1.
Develop a Web page with the following enhancements: ! ! !
A rollover effect, where an image changes if the user places the mouse over it. An animation that occurs in response to the user clicking on an image. A pull-down menu with each option linking to a specific page.
2.
Design a Web page. Integrate images, audio, video and animation all in one page.
3.
Develop the Question 1: Session 8 using XML
SESSION 10 Exercises
28
1.
Design a website about yourself (minimum 5-7 pages).
2.
Design the home page using Frames. The top frame will contain a Flash animation file (showing pictures of you from childhood to till date), the left frame will contain all the links and the right page will contain â&#x20AC;&#x153;Welcome to My Home Pageâ&#x20AC;?. When clicked on the links the related page will open in the right frame.